我正在尝试将多个json对象加入一个Json。但是我在具有相同密钥的json对象上合并时遇到问题。

如果我有如下所示的json:

{K1 - V1}
{K2 - V2}
{K3 - V3}
{K1 - V4}


我想输出:

{K1 - [V1, V4], K2- V2, K3 - V3}


我可以使用以下代码合并具有唯一键的Json:

    private JSONObject mergeJsons(ArrayList<JSONObject> arr) {
        JSONObject mergedObj = new JSONObject();
        try {
            for (JSONObject o : arr) {
                Iterator i = o.keys();
                String tmp_key;
                while (i.hasNext()) {
                    tmp_key = (String) i.next();
                    mergedObj.put(tmp_key, o.get(tmp_key));
                }
            }
        } catch (JSONException e) {
            System.out.println("Json Exception");
            return null;
        }
        return mergedObj;
    }


但是我正在尝试让多值元素(即V1和V4)成为Json数组。有一个简单的方法吗?

谢谢!

最佳答案

在执行mergedObj.put的地方,您必须具有执行以下操作的逻辑(以伪代码)

v = mergedObj.get(key)
if (v == null)
    mergedObj.put(key,value)
else
    if (v is not a list)
        temp = v
        v = new list()
        v.add(temp)
    v.add(value)


这为您提供了一个映射,其中某些值是单个对象,而某些值是列表(数组)。您可能应该对其进行正则化,以便所有值都是数组。

09-19 00:31