gpt4 book ai didi

java - JSON 添加到 JSONArray 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:32 26 4
gpt4 key购买 nike

大家好,我不是最擅长 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 引用:

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);
}

否则您将一遍又一遍地更新同一个实例,并多次将对同一个对象的引用添加到数组中。由于它们都是相同的引用,因此对其中一个的更改会影响数组中的所有引用。

关于java - JSON 添加到 JSONArray 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com