[英]JSONObject inside JSONArray
我正在尝试将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"
}
]
}
]
“事件”键值大多数位于JSONArray中的唯一元素之内,而不是另一个元素。
JSONArray
包含一个JSONObject
。 当你jsonArray.put(jsonObject);
你将它添加到JSONArray
,不给JSONObject
的JSONArray
。
这将增加jsonObject
到第一JSONObject
在JSONArray
jsonArray.getJsonObject(0).put("events",jsonObject.get("events"));
你需要,
((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());
}
我没有测试代码,但我认为这可以工作。 如果需要,请尝试。 jsonArray[0].events
将在索引为0的Object中创建一个名为“ events”的新字段。
jsonArray[0].events = jsonObject.events;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.