当前位置: 首页 > news >正文

十堰市住房和城乡建设厅官方网站王野天天

十堰市住房和城乡建设厅官方网站,王野天天,数字化经营服务商,wordpress导航分类JSON数据的操作,系列文章: 《Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode》 《Jackson的使用与创建Jackson工具类》 《Jackson使用ObjectNode对象实现JSON对象数据(一):增、删…

 JSON数据的操作,系列文章:

《Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode》

《Jackson的使用与创建Jackson工具类》

《Jackson使用ObjectNode对象实现JSON对象数据(一):增、删、改、查》

《Jackson使用ArrayNode对象实现JSON列表数据(二):增、删、改、查》

《Jackson实现JSON数据的合并》

Jackson 库实现 JSON 数据的合并,可以采用基于树模型的深度合并(递归策略),可以保留两个 JSON 的所有层级数据,避免覆盖冲突。在实际开发中,Jackson 功能丰富、安全可靠并且具有比较好的兼容性,这让程序开发人员可以很方便地实现 JavaBean 和以 “键 : 值” 结构保存的 JSON 数据的相互转换。

1、创建 Jackson 工具类

创建 JacksonUtil 类(Jackson工具类),实现JSON数据的合并方法。

package com.pjb.utils;import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;/*** Jackson工具类* @author pan_junbiao**/
public class JacksonUtil
{private static ObjectMapper mapper = new ObjectMapper();/*** 合并 JSON 数据* @return 合并后的 JsonNode 对象*/public static JsonNode mergeJsonNode(JsonNode mainNode, JsonNode updateNode){//参数校验if (mainNode == null && updateNode == null){return null;}if (mainNode == null){return updateNode;}if (updateNode == null){return mainNode;}if (mainNode.isObject() && updateNode.isObject()){ObjectNode mergedNode = (ObjectNode) mainNode;updateNode.fields().forEachRemaining(entry -> {String key = entry.getKey();JsonNode value = entry.getValue();if (mergedNode.has(key)){mergedNode.set(key, mergeJsonNode(mergedNode.get(key), value));} else{mergedNode.set(key, value);}});return mergedNode;} else{// 非对象类型直接覆盖(如数组、基本类型)return updateNode;}}/*** 合并 JSON 数据* @return 合并后的 JSON 字符串*/public static String mergeJsonString(String mainJson, String updateJson){//参数校验if ((mainJson == null || mainJson.length() == 0) && (updateJson == null || updateJson.length() == 0)){return null;}if (mainJson == null || mainJson.length() == 0){return updateJson;}if (updateJson == null || updateJson.length() == 0){return mainJson;}try{//合并 JSON 数据JsonNode mainNode = mapper.readTree(mainJson);JsonNode updateNode = mapper.readTree(updateJson);JsonNode resultNode = mergeJsonNode(mainNode, updateNode);return mapper.writeValueAsString(resultNode);} catch (Exception e){e.printStackTrace();}return null;}
}

2、测试 JSON 数据的合并

创建测试方法,测试 JSON 数据的合并结果。

/*** 合并 JSON 数据*/
@Test
public void mergeJsonTest()
{try{String mainNode = "{\n" +"  \"userId\": 1,\n" +"  \"userName\": \"pan_junbiao的博客\"\n" +"}";String updateNode = "{\n" +"  \"userName\": \"pan_junbiao的博客_001\",\n" +"  \"blogName\": \"您好,欢迎访问 pan_junbiao的博客\",\n" +"  \"blogUrl\": \"https://blog.csdn.net/pan_junbiao\",\n" +"  \"hobbies\": [\"游泳\", \"篮球\", \"足球\"]\n" +"}";//合并 JSON 数据String result = JacksonUtil.mergeJsonString(mainNode, updateNode);//打印结果System.out.println(result);} catch (Exception ex){ex.printStackTrace();}
}

执行结果:

{"userId": 1,"userName": "pan_junbiao的博客_001","blogName": "您好,欢迎访问 pan_junbiao的博客","blogUrl": "https://blog.csdn.net/pan_junbiao","hobbies": ["游泳", "篮球", "足球"]
}

http://www.dtcms.com/a/434741.html

相关文章:

  • 【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航
  • 全面保护隐私的开源个人知识管理工具——SiYuan
  • html5网站开发参考文献无锡网站制作哪家值得信赖
  • python简易程序跑NLPIR模型
  • GPIO 子系统和 pinctrl 子系统
  • 站酷网首页wordpress内容页显示tag
  • linux下的进程间和线程间通信
  • 网站小图片素材商务网站大全
  • Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解)
  • 哔哩哔哩国际版分享 | 白色版 ,蓝色概念版
  • 《P2758 编辑距离》
  • unserialize反序列化漏洞
  • 美工网站设计收费网站中的动态统计图如何做
  • LabVIEW谐波失真分析
  • 秦皇岛市网站制作公司民宿可以在哪些网站做推广
  • 【C++】异常介绍:高级应用与性能优化
  • 大气的网站首页重庆网站建设公司的网站
  • 独立开发者日常:Java大模型流式输出教程
  • 汽车信息安全基石:SHE(安全硬件扩展)深度解析
  • 2025年大模型服务性能深度解析:从清华评测报告看蓝耘元生代MaaS平台的综合实力
  • 网站是哪个公司做的WordPress的网外无法访问
  • 从0死磕全栈之Next.js 流式渲染(Streaming)实战:实现渐进式加载页面,提升用户体验
  • 自己如何创建网站深圳 网站制作
  • 【双指针专题】之复写零
  • 英语学习-Saints039
  • 网站制作费用入什么科目淘宝客优惠券网站建设教程视频
  • CSS field-sizing 让表单「活」起来
  • 【Flutter】抽象类的运用(abstract与implements的实践)
  • 上海建设网站便宜的网站服务器是什么意思
  • 11.UE-游戏逆向-内存中的FUObjectArray(深入理解内存数据)