根据java中的键添加2个json对象

poo*_*ank 5 java merge json

我正在研究java中的Json Objects!我有2个json对象如下:

{"a":{"num1":5},"b":{"num1":8}}

{"a":{"num2":7},"b":{"num2":9}}
Run Code Online (Sandbox Code Playgroud)

我想创建一个单独的json对象:

 {"a":{"num1":5,"num2":7},"b":{"num1":8,"num2":9}}
Run Code Online (Sandbox Code Playgroud)

我该如何合并2个对象来实现上述结果?

Max*_*tin 1

最简单的方法是创建列表并循环两个对象:

public static void main(String[] args) {
    String str1 = "{\"a\":{\"num1\":5},\"b\":{\"num1\":8}}";
    String str2 = "{\"a\":{\"num2\":7},\"b\":{\"num2\":9}}";

    try {
        JSONObject str1Json  = new JSONObject(str1);
        JSONObject str2Json  = new JSONObject(str2);

        List<JSONObject> list = Arrays.asList(str1Json, str2Json);

        JSONObject storage = new JSONObject();
        JSONObject storageA = new JSONObject();
        JSONObject storageB = new JSONObject();
        JSONObject a;
        JSONObject b; 
        JSONObject obj;

        for(int i=1; i<= list.size(); i++){

            obj  = list.get(i-1);

            a = obj.getJSONObject("a");
            b = obj.getJSONObject("b");

            storageA.put("num"+i, a.getInt("num"+i)); // we don't want build list               
            storageB.put("num"+i, b.getInt("num"+i));               
        }

        storage.put("a", storageA);
        storage.put("b", storageB);

        System.out.println(storage.toString());
    } catch (JSONException e1) {
    }
} 
Run Code Online (Sandbox Code Playgroud)

输出:

 {"b":{"num2":9,"num1":8},"a":{"num2":7,"num1":5}}
Run Code Online (Sandbox Code Playgroud)