有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用重复键将多个json连接到一个json对象

我正在尝试将多个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数组。有没有一个简单的方法可以做到这一点

谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    在执行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)
    

    这就给你留下了一个地图,其中一些值是单个对象,一些值是列表(数组)。您可能应该将其正则化,以便所有值都是数组