web-dev-qa-db-fra.com

Quelle est la meilleure façon de combiner (fusionner) 2 JSONObjects?

Quelle est la meilleure façon de combiner (fusionner) deux JSONObjects?

JSONObject o1 = {
    "one": "1",
    "two": "2",
    "three": "3"
}
JSONObject o2 = {
        "four": "4",
        "five": "5",
        "six": "6"
    }

Et le résultat de la combinaison o1 et o2 doit être

JSONObject result = {
        "one": "1",
        "two": "2",
        "three": "3",
        "four": "4",
        "five": "5",
        "six": "6"
    }
13
jimpanzer

J'ai le même problème: je ne trouve pas la méthode putAll (et elle n'est pas répertoriée dans la page de référence officielle ).

Donc, je ne sais pas si c'est la meilleure solution, mais cela fonctionne sûrement très bien:

//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));
}

Maintenant, le JSONObject fusionné est stocké dans mergedObj

10
Vito Gentile

les objets JSON fusionnent dans ce nouvel objet Json comme celui-ci. 

    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());

maintenant o1 sera l’objet json fusionné. Vous obtiendrez le résultat comme ceci:

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

veuillez vous référer à ce lien et télécharger la bibliothèque smartjson. voici le lien http://code.google.com/p/json-smart/wiki/MergeSample

j'espère que ça va aider.

3
Nirav Tukadiya

Que dis-tu de ça:

            Iterator iterator = json2.keys();
            while(iterator.hasNext()){
                String key = iterator.next().toString();
                json1.put(key,map.optJSONObject(key));
            }
0
tainy