Каков наилучший способ объединить (объединить) 2 JSONObjects?
Каков наилучший способ объединить (слить) два JSONObjects
?
JSONObject o1 = {
"one": "1",
"two": "2",
"three": "3"
}
JSONObject o2 = {
"four": "4",
"five": "5",
"six": "6"
}
И результат объединения o1
и o2
должен быть
JSONObject result = {
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6"
}
Ответы
Ответ 1
У меня есть одна и та же проблема: я не могу найти метод putAll
(и он не указан на официальной странице справки ).
Итак, я не знаю, является ли это лучшим решением, но, безусловно, оно работает достаточно хорошо:
//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));
}
Теперь объединенный JSONObject хранится в mergedObj
Ответ 2
объекты json должны объединяться в этот новый json-объект, подобный этому.
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());
теперь o1 будет объединенным json-объектом.
вы получите результат следующим образом:
{"three":"3","two":"2","four":"4","one":"1"}
пожалуйста, перейдите по этой ссылке и скачайте библиотеку smartjson. Здесь есть ссылка http://code.google.com/p/json-smart/wiki/MergeSample
надеюсь, что это поможет.
Ответ 3
Как насчет этого:
Iterator iterator = json2.keys();
while(iterator.hasNext()){
String key = iterator.next().toString();
json1.put(key,map.optJSONObject(key));
}
Ответ 4
Объединить 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());
}
Ответ 5
Попробуйте это.. надеюсь, что это поможет
JSONObject result = new JSONObject();
result.putAll(o1);
result.putAll(O2);