2017-04-10 27 views
0

我有一個名爲childData的JSONObject,它包含每個項目的名稱,數量和價格,並將其添加到JSONArray pa中。但是在每次迭代之後,先前迭代的childData輸出值將被pa中當前迭代輸出值的值替換。在JSONArray中複製的JSONObject數據

代碼:

JSONArray pa = new JSONArray(); 
    JSONObject childData = new JSONObject(); 
    for(int i=0; i<name.size();i++) { 
     childData.put("Name", name.get(i)); 
     childData.put("Qty", qty.get(i)); 
     childData.put("Amt", price.get(i)); 
     pa.put(childData); 
    } 

正在生產輸出像下面

childData= {"Name":"Shirt","Qty":"1","Amt":"300"} 
    pa= [{"Name":"Shirt","Qty":"1","Amt":"300"}] 
    child= {"Name":"Coat","Qty":"1","Amt":"210"} 
    pa= [{"Name":"Coat","Qty":"1","Amt":"210"},{"Name":"Coat","Qty":"1","Amt":"210"}] 

回答

1

您需要在創建的childData一個新實例循環。事情是這樣的:

JSONArray pa = new JSONArray(); 
for(int i=0; i<name.size();i++) { 
    JSONObject childData = new JSONObject(); 
    childData.put("Name", name.get(i)); 
    childData.put("Qty", qty.get(i)); 
    childData.put("Amt", price.get(i)); 
    pa.put(childData); 
} 

你現在正在做的方式,還有這是你把數組中的元素之間共享一個單一的childData實例。修改該實例時,它也會對每個元素進行「修改」。所以,當它序列化它時,你會看到你看到的不好的結果。