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

news2024/9/24 23:34:28

对比两个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.coloradmin.cn/o/2161785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务即时通讯系统】——etcd一致性键值存储系统,etcd的介绍,etcd的安装,etcd使用和功能测试

文章目录 etcd1. etcd的介绍1.1 etcd的概念 2. etcd的安装2.1 安装etcd2.2 安装etcd客户端C/C开发库 3. etcd使用3.1 etcd接口介绍 4. etcd使用测试4.1 原生接口使用测试4.2 封装etcd使用测试 etcd 1. etcd的介绍 1.1 etcd的概念 Etcd 是一个基于GO实现的 分布式、高可用、一致…

第十五章 文件上传

目录 一、文件上传注意点 二、JavaWeb上传文件的核心 三、常规的JavaWeb上传实现 四、运行效果 一、文件上传注意点 1. 为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。 2. 为防止文件覆盖的现象发生&#xff…

[万字长文]stable diffusion代码阅读笔记

stable diffusion代码阅读笔记 获得更好的阅读体验可以转到我的博客y0k1n0的小破站 本文参考的配置文件信息: AutoencoderKL:stable-diffusion\configs\autoencoder\autoencoder_kl_32x32x4.yaml latent-diffusion:stable-diffusion\configs\latent-diffusion\lsun_churches-ld…

Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)

Unity 3D GUI 简介 游戏开发过程中,开发人员往往会通过制作大量的图形用户界面( Graphical User Interface,GUI )来增强游戏与玩家的交互性。 Unity 3D 中的图形系统分为 OnGUI、NGUI、UGUI等,这些类型的图形系统内容…

springboot项目引入了第三方jar包

应该把jar包放在resource目录下,新建一个lib目录放进去,不然打包的时候会报错找不到jar包,放入jar包,右键添加到库,才可以使用。 _g().startMarquee();

解决方案 | 镭速助力动漫游戏行业突破跨网文件交换瓶颈

在数字化浪潮推动下,动漫游戏行业蓬勃发展。随着高清技术的普及和云游戏的兴起,动漫游戏行业对动画的画质要求越来越高,数据量呈现爆炸式增长。然而,行业内的跨网文件交换难题也日益凸显,成为制约行业发展的瓶颈。 行业…

RTE大会报名丨 重塑语音交互:音频技术和 Voice AI,RTE2024 技术专场第一弹!

Voice AI 实现 human-like 的最后一步是什么? AI 视频爆炸增长,新一代编解码技术将面临何种挑战? 当大模型进化到实时多模态,又将诞生什么样的新场景和玩法? 所有 AI Infra 都在探寻规格和性能的最佳平衡&#xff0…

考研数据结构——C语言实现插入排序

插入排序是一种简单直观的比较排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place(原地排序)&#…

BUUCTF [SCTF2019]电单车

使用audacity打开,发现是一段PT2242 信号 PT2242信号 有长有短,短的为0,长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

neo4j小白入门

1.建立几个学校的节点 1.1创建一个节点的Cypher命令 create (Variable:Lable {Key1:Value,Key2,Value2}) return Variable 1.2创建一个学校的节点 create (n:School{name:清华大学,code: 10003,establishmentDate:date ("1911-04-29")})return n 1.3一次创建几个…

Ribbon布局和尺寸调整

Ribbon布局和尺寸调整 在本文中 Ribbon大小调整概述 默认大小调整行为 指定自定义调整大小行为 控件级调整 Ribbon使用自适应布局和调整大小来呈现各种窗口大小的最佳控件布局。Ribbon提供默认的大小调整行为,适用于许多常见场景。WPF的Microsoft Ribbon还提供了一…

【可图(Kolors)部署与使用】大规模文本到图像生成模型部署与使用教程

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 1.Kolors 简介 1.1.什么是Kolors? 开发团队 Kolors 是由快手 Kolors 团队…

组合优化与凸优化 学习笔记4 凸优化问题

优化问题基本定义 假如f(x)是方圆R以内(R只要大于0就行)最好的一个解 等价问题 就是这种优化函数没啥区别(乘了个系数),约束们也就多了个系数的情况,这和原本的显然一样。这是等价的最简单的例子。 归根结…

MES系统如何提升制造企业的运营效率和灵活性

参考拓展:苏州稳联-西门子MES系统-赋能智能制造的核心引擎 制造执行系统(MES)在提升制造企业运营效率和灵活性方面发挥着关键作用。 一、MES系统的基本概念和功能 MES系统是连接企业管理层与生产现场的重要桥梁。它主要负责生产调度、资源管理、质量控制等多个方…

【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760

本文涉及的基础知识点 基础数学 LeetCode2121. 相同元素的间隔之和 难度分:1760 令2165,和此题几乎相等。 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和…

李宏毅2023机器学习HW15-Few-shot Classification

文章目录 LinkTask: Few-shot ClassificationBaselineSimple—transfer learningMedium — FO-MAMLStrong — MAML Link Kaggle Task: Few-shot Classification The Omniglot dataset background set: 30 alphabetsevaluation set: 20 alphabetsProblem setup: 5-way 1-sho…

9/24作业

1. 分文件编译 分什么要分文件编译? 防止主文件过大,不好修改,简化编译流程 1) 分那些文件 头文件:所有需要提前导入的库文件,函数声明 功能函数:所有功能函数的定义 主函数:main函数&…

请不要在TS中使用Function类型

在 TypeScript 中,避免使用 Function 作为类型。Function 代表的是“任意类型的函数”,这会带来类型安全问题。对于绝大多数情况,你可能更希望明确地指定函数的参数和返回值类型。 如果你确实想表达一个可以接收任意数量参数并返回任意类型的…

Kali wireshark抓包

wireshark 查看指定网卡进出流量 构造一个只能显示ICMP数据包的显示过滤器 ARP 同理,显示过滤器会屏蔽所有除了 ARP 请求和回复之外的数据包

力扣 中等 92.反转链表 II

文章目录 题目介绍题解 题目介绍 题解 class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 创建一个哑节点,它的 next 指向头节点,方便处理ListNode dummy new ListNode(0, head);// p0 用于指向反转部分的前一个…