大家好,我不是Json最好的。我试图通过循环将一些json对象添加到json数组中,但是问题是每次涉及到循环时,新数据也会遍历数组中的先前数据。这是我的代码:
JSONObject jsonObj = new JSONObject(); JSONArray jsonArray = new JSONArray(); if(X.size() > 0) { for (int j = 0; j < X.size(); j++) { zBean aBean = (zBean)X.get(j); jsonObj.put(ID,newInteger(aBean.getId())); jsonObj.put(NAME,aBean.getName()); jsonArray.add(jsonObj); } }
给定X.size = 2的示例
when j=0 jsonObj => {"Name":"name1","Id":1000} jsonArray => [{"Name":"name1","Id":1000}] when j = 1 jsonObj => {"Name":"name2","Id":1001} jsonArray => [{"Name":"name2","Id":1001},{"Name":"name2","Id":1001}]
我希望我的例子足够清楚。
如果有人能在这里帮助我,我将不胜感激。
您需要jsonObj在循环的每次迭代中创建一个新的引用:
jsonObj
for (int j = 0; j < X.size(); j++) { zBean aBean = (zBean)X.get(j); jsonObj = new JSONObject(); //^^^^^^^^^^^^^^^^^^^^^^^^^^^ add this line jsonObj.put(ID,newInteger(aBean.getId())); jsonObj.put(NAME,aBean.getName()); jsonArray.add(jsonObj); }
否则,您将一遍又一遍地更新同一实例,并将对同一对象的引用多次添加到数组中。由于它们都是相同的引用,因此对其中一个的更改会影响数组中的所有它们。