倚楼听风雨
淡看江湖路

Java 中如何合并两个复杂结构的 JSON 对象或数组?

后台管理这样的系统一直存在着谜一样的复杂性,老四最近就遇到了一个需求,需要将两个比较复杂的 JSON 结构体合并为一个 JSON 体,其中 A JSON 的优先级要高于 B JSON 优先级,对于 A 中出现的 JSONArray,如果也在 B 中同样出现了,那么将两个 JSONArray 中的元素进行合并且去重,形如下面这样:

JSON 格式

JSON B

如上面两个 JSON 对象所示,我要将 A、B 两个 JSON 合并在一起,当然 A 的优先级最高,即某些属性及属性值如果在 JSON B 中也存在的话,那也只保留 JSON A 中该属性的值,当然,如果某个属性在 A 中不存在但是在 B 中存在,那么最终的合并结果也要保留这个属性,即使 A 的优先级最高。所以我期待的结果是下面这样的:

那么,上述这样的需求,解决方案大致有以下两种:

手敲代码递归合并 JSON

仅作为思路展示,请不要直接照搬!

开源项目「jsonmerge」

在搜寻解决方案的时候,老四发现其实早就有人做这样的事情了,所以我们可以直接使用这个 GitHub 上的开源项目:

不过这个项目在 Maven Repository 中还没有收录,所以在使用时,你可以使用二方库,或者下载下来直接放在本地即可。最基础的用法比较简单,直接合并即可,此外也提供了「JsonMergeOption」工具能够按照 JSON 的路径搜寻的方式使用更高级的、定制化的 json 合并功能,具体可以参考官方的「README」。

更多 JSON 相关工具可以参考本站导航『json』标签:

相关文章阅读

  1. Recursively merge JSON structures
  2. Merge (Concat) Multiple JSONObjects in Java
  3. 分享一款可以打开大 Json 文本文件的神器 – Dadroit Viewer
  4. 全文搜索引擎 Elasticsearch 入门以及踩坑记录详细版
  5. 阿里巴巴Java开发手册第六章-二方库依赖篇

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可以加入本站封闭式交流论坛「DownHub」开启新世界的大门,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

赞(18) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » Java 中如何合并两个复杂结构的 JSON 对象或数组?

开始你的表演 抢沙发

觉得文章有用就打赏一下老四,鼓励我更好的创作

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册