【问题标题】:Add 2 json objects according to keys in java根据java中的键添加2个json对象
【发布时间】:2014-01-01 01:53:51
【问题描述】:

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

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

{"a":{"num2":7},"b":{"num2":9}}

我想创建一个 json 对象为:

 {"a":{"num1":5,"num2":7},"b":{"num1":8,"num2":9}}

我应该如何合并这两个对象才能达到上述结果?

【问题讨论】:

标签: java json merge


【解决方案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) {
    }
} 

输出:

 {"b":{"num2":9,"num1":8},"a":{"num2":7,"num1":5}}

【讨论】:

    【解决方案2】:

    使用 [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&amp;error]; 将 JSON 对象转换为字典,然后轻松执行操作。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多