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

Python常见Json对比库deepdiff、json_tools、jsonpatch

对比两个json对象差异,常见的第三方对比库deepdiff、json_tools、jsonpatch都能够满足我们的需求。

用法:

deepdiff


from deepdiff import DeepDiff


a = {"name": "yanan", "pro": {"sh": "shandong", "city": ["zibo", "weifang"]}}

b = {"name": "Yanan", "pro": {"sh": "shandong", "town": ["taian", "weifang"]}}


result = DeepDiff(a, b)


print(result)

输出结果:

{'dictionary_item_added': [root['pro']['town']], 'dictionary_item_removed': [root['pro']['city']], 'values_changed': {"root['name']": {'new_value': 'Yanan', 'old_value': 'yanan'}}}

json_tools


import json_tools


a = {"name": "yanan", "pro": {"sh": "shandong", "city": ["zibo", "weifang"]}}

b = {"name": "Yanan", "pro": {"sh": "shandong", "town": ["taian", "weifang"]}}


result = json_tools.diff(a, b)


print(result)

输出结果:

[{'replace': '/name', 'value': 'Yanan', 'prev': 'yanan'}, {'remove': '/pro/city', 'prev': ['zibo', 'weifang']}, {'add': '/pro/town', 'value': ['taian', 'weifang']}]

jsonpatch


import jsonpatch


a = {"name": "yanan", "pro": {"sh": "shandong", "city": ["zibo", "weifang"]}}

b = {"name": "Yanan", "pro": {"sh": "shandong", "town": ["taian", "weifang"]}}


result = jsonpatch.JsonPatch.from_diff(a, b)

print(result)

输出结果:

[{"op": "remove", "path": "/pro/city"}, {"op": "add", "path": "/pro/town", "value": ["taian", "weifang"]}, {"op": "replace", "path": "/name", "value": "Yanan"}]

但无论哪种方法,都不方便我们根据对比结果,进行修改原始数据。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


http://www.kler.cn/a/317978.html

相关文章:

  • 【JavaEE初阶 — 多线程】生产消费模型 阻塞队列
  • JAVA:探索 EasyExcel 的技术指南
  • 国家网络安全法律法规
  • Window下PHP安装最新sg11(php5.3-php8.3)
  • 前端:块级元素和行内元素
  • Python →爬虫实践
  • 【Python】curl命令、Api POST导入cURL、python直接使用cURL
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】下
  • 球体检测系统源码分享
  • Rust的作用?
  • tar.gz 文件压缩与解压shell实现
  • 付费电表系统的通用功能和应用过程参考模型(下)
  • 鸿蒙HarmonyOS开发:一次开发,多端部署(界面级)天气应用案例
  • R语言NHANES数据分析(2)
  • Angular面试题五
  • LeetCode_sql_day30(1264.页面推荐)
  • 蓝桥等考C++组-2022-11-27-八级
  • 【C++】C++中如何处理多返回值
  • Vue|插件
  • oracle avg、count、max、min、sum、having、any、all、nvl的用法
  • 回答网友的一个SQL问题
  • 国家有要求企业一定要招实习生吗?或者说招了实习生国家会给企业好处吗?
  • IPv6(五)
  • 探索自闭症寄宿学校:为孩子的未来铺设坚实基石
  • 进程监控与管理详解
  • 若依VUE项目安全kind-of postcss vite漏洞扫描和修复