2015-01-26 1 views
0

내가 JSON 개체를 반환하는 기능을 가지고JSONArray는 1 개의 put 만 반환합니까?

private JSONObject retrieveData() 
{ 
    JSONObject json = new JSONObject(); 

    json.put("Country", "Ireland"); 
    json.put("Capital", "Dublin"); 
    json.put("Country", "Spain"); 
    json.put("Capital", "Madrid"); 
    json.put("Country","France"); 
    json.put("Capital", "Paris"); 


    JSONArray ja = new JSONArray(); 
    ja.put(json); 

    JSONObject mainObj = new JSONObject(); 
    mainObj.put("places", ja); 

    return mainObj; 
} 

내 출력 { "장소"[ { "나라": "프랑스", "자본": "파리" } ] }

모든 .put이 mainOBj에 추가되지 않습니다 이유

, 감사


개체가
를 추가되었지만

은 동일하며, 여기

private JSONObject retrieveData() 
{ 
    JSONObject json = new JSONObject(); 
    JSONArray ja = new JSONArray(); 

    json.put("Country", "Ireland"); 
    json.put("Capital", "Dublin"); 
    ja.put(json); 

    json.put("Country", "Spain"); 
    json.put("Capital", "Madrid"); 
    ja.put(json); 

    json.put("Country","France"); 
    json.put("Capital", "Paris"); 
    ja.put(json); 

    JSONObject mainObj = new JSONObject(); 
    mainObj.put("places", ja); 

    //json.accumulate("places", list); 
    return mainObj; 
} 

같은 문제가 발생 솔루션을 시도 답변 필자 당신에게 이보 감사 : -/ { "장소" [ { "Country": "France", "Capital": "Paris"}, { "Country": "France", "Capital": "Paris"}, { "Country" "Paris"}]}

답변

1

무엇을 (첫 번째 매개 변수)을 t로 설정하면 그는 (두 번째 매개 변수)입니다. 따라서 먼저 아일랜드로 json.Country을 설정하고 더블린으로는 json.Capital을 설정합니다. 다음으로 json.Country을 덮어 쓰고 스페인으로 설정하고 마침내 국가와 자본을 프랑스와 파리로 겹쳐 씁니다.

각 국가/자본 쌍에 대해 JSONObject에서 put을 호출하는 대신 각 쌍에 대해 JSONarray에서 put을 호출해야합니다.

의견에서 지적한대로 매번 데이터를 할당하기 전에 JSONObject을 새로 만들어야합니다.

private JSONObject retrieveData() 
{ 
    // Make sure to declare both the JSONObject and JSONArray first! 
    JSONObject json = new JSONObject(); 
    JSONArray ja = new JSONArray(); 

    // This creates one object for the Ireland/Dublin pair 
    json.put("Country", "Ireland"); 
    json.put("Capital", "Dublin"); 

    // This appends above object (Ireland/Dublin pair) to the JSONArray 
    ja.put(json); 

    // Now repeat the above lines for each pair: 
    json = new JSONObject(); 
    json.put("Country", "Spain"); 
    json.put("Capital", "Madrid"); 
    ja.put(json); 

    json = new JSONObject(); 
    json.put("Country","France"); 
    json.put("Capital", "Paris"); 
    ja.put(json); 

    // Finally, declare the main object and set the key "places" to 
    // the array holding each pair 
    JSONObject mainObj = new JSONObject(); 
    mainObj.put("places", ja); 

    return mainObj; 
} 
+0

답변 해 주셔서 감사합니다. 답안을 모두 덮어 쓰지 않고 출력하는 방법이 있습니까? –

+0

현재 도구를 테스트 할 수있는 도구가 실제로 없지만 추가 한 코드 조각이 효과가 있다고 생각합니다. –

+1

나는 뭔가를 놓친 것일 수도 있지만, 주석 이외의 코드에는 어떤 변화도 보이지 않습니다. 실제로 그가 누락 된 부분은 각'ja.put' 줄 다음에이 줄이 있다고 생각합니다 -'json = new JSONObject();'. 그는 각 배열 요소에 대해 새로운 JSON 객체로 작업하기를 원합니다. JSON 라이브러리가 여전히 참조로 작업하고 있다면 원래 항목을 변경하는 것뿐입니다. – Katana314