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"
}
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
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.
Que dis-tu de ça:
Iterator iterator = json2.keys();
while(iterator.hasNext()){
String key = iterator.next().toString();
json1.put(key,map.optJSONObject(key));
}