마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

json사용에 대한 질문입니다!!

0 추천
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();

for(int a = 0; a < 10; a++){
json.put(1,  1 );

array.add(json);

}
System.out.println(array);}}

[{"1":1},{"1":1},{"1":1},{"1":1},{"1":1},{"1":1},{"1":1},{"1":1},{"1":1},{"1":1}]
예상되로 잘나왔습니다.!!

---------------------------------------------------

JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
for(int a = 0; a < 10; a++){
json.put(1,  a );

array.add(json);

}
System.out.println(array);}}
결과값
[{"1":9},{"1":9},{"1":9},{"1":9},{"1":9},{"1":9},{"1":9},{"1":9},{"1":9},{"1":9}]

결과가 이상합니다...
원래는
[{"1":0},{"1":1},{"1":2},{"1":3},{"1":4},{"1":5},{"1":6},{"1":7},{"1":8},{"1":9}]
이런예상이엿는데...
이상한 결과가 나왔습니다.

-----------------------------------------------------

JSONObject json = new JSONObject();
JSONArray array = new JSONArray();

for(int a = 0; a < 10; a++){
json.put(a,  1 );

array.add(json);

}
System.out.println(array);}}

결과값
[{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1}]
이건 더이상합니다.
원래의 예상은
[{"0":1},{"1":1},{"2":1},{"3":1},{"4":1},{"5":1},{"6":1},{"7":1},{"8":1},{"9":1}]
이건데?.....
-----------------------------------------------------------------

메모장을 만들다 결과값이 네트워크에서 이상하게 와서 보니 이런 문제가 있었네요 ㅠㅠ

도대체 왜 이렇게 되는거죠???ㅠㅠㅠㅠ
ODGG (730 포인트) 님이 2017년 2월 16일 질문

3개의 답변

0 추천
 
채택된 답변

끝까지 읽을 시간이 안되 중간부분에 착각하고 계신거 하나만 짚어드립니다.

JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
for(int a = 0; a < 10; a++){
json.put(1,  a );

array.add(json);

}

JSONArray 안에는 지금 1개의 똑같은 json객체 주소를 10개 가지고 있는게 됩니다.

 

질문자님 의도대로 동작하도록 하려면 array에 똑같이 갯수만큼 참조를 시켜야지요.


JSONArray array = new JSONArray();
for(int a = 0; a < 10; a++){

JSONObject json = new JSONObject();
json.put(1,  a );

array.add(json);

}

이렇게요.

Development Guy (70,570 포인트) 님이 2017년 2월 16일 답변
ODGG님이 2017년 2월 16일 채택됨
정말 감사합니다`~!!
+1 추천
아래와 같이 array에 add 하는 것을 밖으로 빼보세요.
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();

for(int a = 0; a < 10; a++){
json.put(a,  1 );
}
array.add(json);
System.out.println(array);}}

 

개발자초심 (21,220 포인트) 님이 2017년 2월 16일 답변
감사합니다!! !!!!!!!!!!!!!
+1 추천

json 은 아시겠지만 {"String name" :value}로 이루어집니다. 

두번째 예제에서

JSONObject json = new JSONObject(); 에서

9번에 걸쳐 array에 json 넣었지만 

마지막 호출에서 이전에 입력된 모든 json 의 "1"에 해당되는 값을 9로 바꾸었습니다.

포스코 (1,490 포인트) 님이 2017년 2월 16일 답변
해결 방법은 다른분들이 설명해주셨네요 ^^
감사합니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ㅎㅎ
...