JSONArray中的JSONObject

时间:2015-06-26 11:50:41

标签: java arrays json jsonobject

我正在尝试将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中的唯一元素内,而不是另一个元素。

3 个答案:

答案 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;