What is the best way to combine (merge) 2 JSONObjects?

后端 未结 5 1405
梦毁少年i
梦毁少年i 2021-02-19 02:14

What is the best way to combine (merge) two JSONObjects?

JSONObject o1 = {
    \"one\": \"1\",
    \"two\": \"2\",
    \"three\": \"3\"
}
JSONObject         


        
相关标签:
5条回答
  • 2021-02-19 02:55

    Try this.. hope it helps

    JSONObject result = new JSONObject();
    result.putAll(o1);
    result.putAll(O2);
    
    0 讨论(0)
  • 2021-02-19 03:01

    json objects to be merge in that new json object like this.

        JSONObject jObj = new JSONObject();
        jObj.put("one", "1");
        jObj.put("two", "2");
        JSONObject jObj2 = new JSONObject();
        jObj2.put("three", "3");
        jObj2.put("four", "4");
    
    
        JSONParser p = new JSONParser();
        net.minidev.json.JSONObject o1 = (net.minidev.json.JSONObject) p
                            .parse(jObj.toString());
        net.minidev.json.JSONObject o2 = (net.minidev.json.JSONObject) p
                            .parse(jObj2.toString());
    
        o1.merge(o2);
    
        Log.print(o1.toJSONString());
    

    now o1 will be the merged json object. you will get the output like this ::

    {"three":"3","two":"2","four":"4","one":"1"}
    

    please refer this link and download the smartjson library ..here is the link http://code.google.com/p/json-smart/wiki/MergeSample

    hope it will help.

    0 讨论(0)
  • 2021-02-19 03:06

    Merge JsonObject(gson)-

    JsonObject data = new JsonObject();
    data = receivedJsoData.get("details").getAsJsonObject();
    
    JsonObject data2 = new JsonObject();
    data2 = receivedJsoData1.get("details").getAsJsonObject();
    
    JsonObject mergedData = new JsonObject();
    
    Set<Map.Entry<String, JsonElement>> entries = data1.entrySet();  //will return members of your object
    for (Map.Entry<String, JsonElement> entry : entries) {
        mergedData.add(entry.getKey(), entry.getValue());
    }
    Set<Map.Entry<String, JsonElement>> entries1 = data2.entrySet();  //will return members of your object
    for (Map.Entry<String, JsonElement> entry : entries1) {
        mergedData.add(entry.getKey(), entry.getValue());
    }
    
    0 讨论(0)
  • 2021-02-19 03:19

    I have your same problem: I can't find the putAll method (and it isn't listed in the official reference page).

    So, I don't know if this is the best solution, but surely it works quite well:

    //I assume that your two JSONObjects are o1 and o2
    JSONObject mergedObj = new JSONObject();
    
    Iterator i1 = o1.keys();
    Iterator i2 = o2.keys();
    String tmp_key;
    while(i1.hasNext()) {
        tmp_key = (String) i1.next();
        mergedObj.put(tmp_key, o1.get(tmp_key));
    }
    while(i2.hasNext()) {
        tmp_key = (String) i2.next();
        mergedObj.put(tmp_key, o2.get(tmp_key));
    }
    

    Now, the merged JSONObject is stored in mergedObj

    0 讨论(0)
  • 2021-02-19 03:20

    How about this:

                Iterator iterator = json2.keys();
                while(iterator.hasNext()){
                    String key = iterator.next().toString();
                    json1.put(key,map.optJSONObject(key));
                }
    
    0 讨论(0)
提交回复
热议问题