JSONArray

时间:2017-04-10 07:28:43

标签: json

我有一个名为childData的JSONObject,它包含每个项目的名称,数量和价格,并在JSONArray pa中添加。但是在每次迭代之后,childData的前一次迭代输出值将被替换为pa中当前迭代输出值的值。

代码:

    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 个答案:

答案 0 :(得分:1)

您需要在for循环中创建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实例,它在你放入数组的所有元素之间共享。当您修改该实例时,它会被修改&#34;对于每个元素也是如此。因此,当需要对其进行序列化时,您会看到糟糕的结果。