JSONArray 中的 JSONObject
JSONObject inside JSONArray
我正在尝试将 JSONObject 放入 Java 中的 JSONArray 中。这是我的两个对象:
JSONArray:
[{
"url": null,
"flag": "0",
"read": "0",
"time": 2000,
"exp": null,
"population": 10
}]
JSON对象:
{
"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 中的唯一元素内,而不是作为另一个元素。
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());
}
我没有测试代码,但我认为这可行。如果你愿意,试试吧。
jsonArray[0].events
将在 0 索引对象中创建一个名为 'events' 的新字段。
jsonArray[0].events = jsonObject.events;
我正在尝试将 JSONObject 放入 Java 中的 JSONArray 中。这是我的两个对象:
JSONArray:
[{
"url": null,
"flag": "0",
"read": "0",
"time": 2000,
"exp": null,
"population": 10
}]
JSON对象:
{
"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 中的唯一元素内,而不是作为另一个元素。
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());
}
我没有测试代码,但我认为这可行。如果你愿意,试试吧。
jsonArray[0].events
将在 0 索引对象中创建一个名为 'events' 的新字段。
jsonArray[0].events = jsonObject.events;