2017-04-11 74 views
1

建立一個嵌套的JSON,我試圖建立以下類型內循環

[ 
    {"Value":0,"Cities":["London","Tokyo","Washington"],"Name":"John"}, 
    {"Value":1,"Cities":["London","Tokyo","Washington"],"Name":"John"}, 
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"} 
] 

的JSON對象,這是我到現在爲止完成。 JSON對象用最後一項寫入。

JSONArray outer = new JSONArray(); 
     JSONObject js = new JSONObject(); 
     List<String> str = new ArrayList<String>(); 
     str.add("London"); 
     str.add("Tokyo"); 
     str.add("Washington"); 

     int res = 3; 


     for(int i=0;i<res;i++){ 
      js.put("Value", i); 
      js.put("Name", "John"); 
      js.put("Cities", str); 
      outer.add(js);   
     }   
     System.out.println(outer); 

什麼我現在得到的是:

[ 
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"}, 
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"}, 
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"} 
    ] 

回答

2

內循環創建一個新的JSONObject每次

JSONArray outer = new JSONArray(); 
    JSONObject js = null; 
    List<String> str = new ArrayList<String>(); 
    str.add("London"); 
    str.add("Tokyo"); 
    str.add("Washington"); 

    int res = 3; 


    for(int i=0;i<res;i++){ 
     js= new JSONObject(); 
     js.put("Value", i); 
     js.put("Name", "John"); 
     js.put("Cities", str); 
     outer.add(js);   
    }   
    System.out.println(outer); 

此外,你可能會得到同樣的問題,如果隨時變化的城市,因此,除非他們將始終保持需要三個,創建每個對象一個新的列表。

+0

是的,這是一個虛擬的例子。我現在明白了這個問題。謝謝。 – Betafish

0

您需要爲每個Value,Name,Cities對創建新的JSON對象。 所以你需要把它放在第二個循環。像這樣

for(int i=0;i<res;i++){ 
     js= new JSONObject();