JAVA JSONObject 多层级多json合并
业务场景:
多个结构一致的json字符串,需要合并成一个jsonObject,相当于取两个json的并集。
例如:
JSONObject1=
{"aaa":"1","bbb":{"test":"test"}}
JSONObject2=
{"aaa":"2","bbb":{"test2":"test2"}}
JSONObject jt = jsonMerge(jsonObject,jsonObject1);
jt={"aaa":"1","bbb":{"test2":"test2","test":"test"}}
可见,bbb中,包含test和test2
public static JSONObject jsonMerge(JSONObject source, JSONObject target) { // 覆盖目标JSON为空,直接返回覆盖源 if (target == null) { return source; } for (String key : source.keySet()) { Object value = source.get(key); if (!target.containsKey(key)) { target.put(key, value); } else { if (value instanceof JSONObject) { JSONObject valueJson = (JSONObject) value; JSONObject targetValue = jsonMerge(valueJson, target.getJSONObject(key)); target.put(key, targetValue); } else if (value instanceof JSONArray) { JSONArray valueArray = (JSONArray) value; for (int i = 0; i < valueArray.size(); i++) { JSONObject obj = (JSONObject) valueArray.get(i); JSONObject targetValue = jsonMerge(obj, (JSONObject) target.getJSONArray(key).get(i)); target.getJSONArray(key).set(i, targetValue); } } else { target.put(key, value); } } } return target; }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。