JSONArray不正确构建
JSONArray topologyInfo = new JSONArray(); String[] ids = {"1","2","3"};
JSONObject topoInfo = readTaskLog(); //returns an object like {Name:"Stack"}
if (topoInfo != null) {
for (String id : ids) {
JSONObject tempobj=topoInfo;
tempobj.put("id", id));
topologyInfo.put(tempobj);
}
}
我需要3和一个JSONObjects与名称堆栈和id为1,2 & 3.在我的JSONArray 3个对象与"id" 3
我的最终结果应该是像JSONArray不正确构建
[{ "Name": "Stack",
"id": "1"
},
{
"Name": "Stack",
"id": "2"
},
{
"Name": "Stack",
"id": "3"
}]
但是我却越来越为
[{ "Name": "Stack",
"id": "3"
},
{
"Name": "Stack",
"id": "3"
},
{
"Name": "Stack",
"id": "3"
}]
回答:
这里的问题是,你是重用相同的JSONObject在for循环的每次迭代,所以你要重写的“ID” v ALUE。
尝试复制而不是对象...
JSONArray topologyInfo = new JSONArray(); String[] ids = {"1","2","3"};
JSONObject topoInfo = readTaskLog(); //returns an object like {Name:"Stack"}
if (topoInfo != null) {
for (String id : ids) {
JSONObject tempobj=new JSONObject(topoInfo.toString());
tempobj.put("id", id));
topologyInfo.put(tempobj);
}
}
回答:
你覆盖了相同的属性'id'
每次迭代。 JSONObject#put
确实指的是Map
接口。
这是因为:
JSONObject tempobj = topoInfo;
你不处理一个新JSONObject
,但你简单地复制它的参考。
以上是 JSONArray不正确构建 的全部内容, 来源链接: utcz.com/qa/262853.html