我有 n 组 json 字符串。我如何在 Java 中将它们合并为一个?
如果有冲突,最新的json会覆盖之前的信息。数组不合并。
例子
json 基础:
{
"plank" : {
"count" : 2,
"properties" : {
"type" : "oak",
"dimensions" : [5.0, 25, 25]
}
}
}
合并为:
{
"plank" : {
"count" : 4,
"properties" : {
"dimensions" : [5.0, 12.5, 25]
}
},
"scrap" : {
"count" : 1,
}
}
成为:
{
"plank" : {
"count" : 4,
"properties" : {
"type" : "oak",
"dimensions" : [5.0, 12.5, 25]
}
},
"scrap" : {
"count" : 1,
}
}
最佳答案
我最终采用了一种递归合并 JSON 的方法。
public JSONObject merge(List<JSONObject> objects) {
for (int i = 0, j = 1; i < objects.size() - 1; i++, j++) {
merge(objects.get(i), objects.get(j));
}
return objects.get(objects.size() - 1);
}
private void merge(JSONObject j1, JSONObject j2) {
Iterator<String> keys = j1.keys();
Object obj1, obj2;
while (keys.hasNext()) {
String next = keys.next();
if (j1.isNull(next)) continue;
obj1 = j1.get(next);
if (!j2.has(next)) j2.putOpt(next, obj1);
obj2 = j2.get(next);
if (obj1 instanceof JSONObject && obj2 instanceof JSONObject) {
merge((JSONObject) obj1, (JSONObject) obj2);
}
}
}
关于java - 递归合并 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975842/