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

回到顶部