繁体   English   中英

JSONArray中的JSONObject

[英]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 ,不给JSONObjectJSONArray

这将增加jsonObject到第一JSONObjectJSONArray

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM