大家好我不是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);
}
}
Run Code Online (Sandbox Code Playgroud)
给出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}]
Run Code Online (Sandbox Code Playgroud)
我希望我的榜样足够清楚.
如果有人能在这里帮助我,我将不胜感激.
mel*_*okb 21
您需要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);
}
Run Code Online (Sandbox Code Playgroud)
否则,您将反复更新同一实例,并多次向该数组添加对同一对象的引用.由于它们都是相同的引用,因此对其中一个的更改会影响数组中的所有引用.
| 归档时间: |
|
| 查看次数: |
43224 次 |
| 最近记录: |