我正在尝试将JSONObject放在Java中的JSONArray中。这是我的两个对象:
JSONArray:
[{
"url": null,
"flag": "0",
"read": "0",
"time": 2000,
"exp": null,
"population": 10
}]
的JSONObject:
{
"events": [
{
"color": "Green",
"event": "Restart"
},
{
"color": "Black",
"event": "Shutdown"
},
{
"color": "White",
"event": "Read"
}
]
}
预期结果:
[
{
"url": null,
"flag": "0",
"read": "0",
"time": 2000,
"exp": null,
"population": 10,
"events": [
{
"color": "Green",
"event": "Restart"
},
{
"color": "Black",
"event": "Shutdown"
},
{
"color": "White",
"event": "Read"
}
]
}
]
我尝试使用此代码,但结果不正常:
jsonArray.put(jsonObject);
意外结果:
[
{
"url": null,
"flag": "0",
"read": "0",
"time": 2000,
"exp": null,
"population": 10
},
{
"events": [
{
"color": "Green",
"event": "Restart"
},
{
"color": "Black",
"event": "Shutdown"
},
{
"color": "White",
"event": "Read"
}
]
}
]
“events”键值大部分位于JSONArray中的唯一元素内,而不是另一个元素。
答案 0 :(得分:2)
JSONArray
包含一个JSONObject
。当您jsonArray.put(jsonObject);
将其添加到JSONArray
时,而不是JSONObject
中的JSONArray
。
这会将jsonObject
添加到JSONObject
JSONArray
jsonArray.getJsonObject(0).put("events",jsonObject.get("events"));
答案 1 :(得分:2)
你需要,
((JSONObject) jsonArray.get(0)).put("events", jsonObject.get("events"));
或者,以更一般化的形式,
for (Map.Entry entry : (Set<Map.Entry>) jsonObject.entrySet()) {
((JSONObject) jsonArray.get(0)).put(entry.getKey(), entry.getValue());
}
答案 2 :(得分:0)
我没有测试过代码,但我认为这样可行。如果你愿意,试试吧。
jsonArray[0].events
会创建一个名为&#39; events&#39;在0索引的Object中。
jsonArray[0].events = jsonObject.events;