栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【util】深度合并(深度拷贝)两个JSON对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【util】深度合并(深度拷贝)两个JSON对象

有个功能深度合并两个JSON对象,需要两个json进行深度合并处理,即合并具有相同名称的字段的内容(就像在 Windows 中复制文件夹时一样)。

代码审查
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtils {
	
	public static JSONObject deepMerge(JSONObject source, JSONObject target) throws JSONException {
		for (String key : JSONObject.getNames(source)) {
			Object value = source.get(key);
			if (!target.has(key)) {
				// new value for "key":
				target.put(key, value);
			} else {
				// existing value for "key" - recursively deep merge:
				if (value instanceof JSONObject) {
					JSONObject valueJson = (JSONObject) value;
					deepMerge(valueJson, target.getJSONObject(key));
				} else {
					target.put(key, value);
				}
			}
		}
		return target;
	}

	
	public static void main(String[] args) throws JSONException {
		JSONObject a = new JSONObject("{offer: {issue1: value1}, accept: true}");
		JSONObject b = new JSONObject("{offer: {issue2: value2}, reject: false}");
		System.out.println(a + " + " + b + " = " + JsonUtils.deepMerge(a, b));
// prints:
// {"accept":true,"offer":{"issue1":"value1"}} + {"reject":false,"offer":{"issue2":"value2"}} = {"reject":false,"accept":true,"offer":{"issue1":"value1","issue2":"value2"}}
	}

}

参考资料

深度合并两个JSON对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号