Java JSONArray中的JSONObject
我试图在Java中将JSONObject放入JSONArray中。这是我的两个目标: 杰索纳雷:Java JSONArray中的JSONObject,java,arrays,json,jsonobject,Java,Arrays,Json,Jsonobject,我试图在Java中将JSONObject放入JSONArray中。这是我的两个目标: 杰索纳雷: [{ "url": null, "flag": "0", "read": "0", "time": 2000, "exp": null, "population": 10 }] JSONObject: { "events": [ { "color": "Green", "event": "Restart"
[{
"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"
}
]
}
]
[
{
"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"
}
]
}
]
[
{
"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中的唯一元素内,而不是作为另一个元素。JSONArray包含一个
JSONObject
。当您jsonArray.put(jsonObject)时;
您正在将它添加到JSONArray
,而不是添加到JSONArray
中的JSONObject
这将把jsonObject
添加到JSONArray
中的第一个jsonObject
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());
}
for(Map.Entry:(Set)jsonObject.entrySet()){
((JSONObject)jsonArray.get(0)).put(entry.getKey(),entry.getValue());
}
我没有测试代码,但我认为这会起作用。如果你想试试的话。
jsonArray[0]。事件将在0索引对象中创建一个名为“事件”的新字段
jsonArray[0].events = jsonObject.events;
这正是我所期望的。