Python 比较两个json的方法

Posted Qtest之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 比较两个json的方法相关的知识,希望对你有一定的参考价值。

在测试过程中经常会对比两个json的异同,如果当json串较长时,一个一个的对比显然是很浪费时间的。

所以写一个比较json异同的测试方法是很有必要的。

下面介绍一下比较json异同的两种方法,以及测试demo。

Python 比较两个json的方法

json_tools

首先介绍下python的类库 json_tools

安装

pip install json_tools

比较json

Python 比较两个json的方法

输出为:

[{'replace': '/right', 'value': 'R', 'prev': 'r'}, {'remove': '/box', 'prev': 'b'}, {'add': '/boxs', 'value': 'box'}]


输出导读


上面的输出显示的是b相对于a的变化:


1) b和a都有键’right’,但是b相对a键’right’的值发生了变化,由原来的r变为R,所以比较结果的list有{'replace': '/right', 'value': 'R', 'prev': 'r'}

其中replace标识发生变化的键,value标识变化后即当前该键的值,prev表示该键此前的值。


2) b中的boxes相对于a,是新增的键,所以结果集中有{'add': '/boxs', 'value': 'box'}


3) b相对于a没有box键,所以结果集中有{'remove': '/box', 'prev': 'b'}


多层嵌套的对比

Python 比较两个json的方法

输出为:

[{'replace': '/left', 'value': 5, 'prev': 6}, {'add': '/right/ads/des', 'value': '新增键'}, {'remove': '/box/3', 'prev': {'id': 4, 'title': '标题4'}, 'details': 'array-item'}]


其中/right/ads/des,表示{“right”:{“ads”:{“des”:}}}


递归

下面介绍下作者自己编写的比较方法,使用了递归的方法比较两个json串

Python 比较两个json的方法


可以输出不同的value,也可以根据自己的需要进行改进。


Python 比较两个json的方法

以上就是作者对于python对比的两种方法。


优缺点对比:


第一种方法:比较简单,直接调用python类库就可以,但是输出格式比较单一,不能满足报告定制化输出。


第二种方法:可以按照自己的需求输出结果,出较灵活,可满足报告的定制输出。


Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!


陪伴是最长情的告白

每日为你推送最in的测试技术


以上是关于Python 比较两个json的方法的主要内容,如果未能解决你的问题,请参考以下文章

python diff json方法

比较两个 JSON 结果并生成新条目的新 JSON (Python)

Python:比较两个json串是不是相等,是直接把它当成字符串来比较呢?还是json.loads(),转化一下再比较

比较两个 JSON 对象,而不考虑其中的元素序列

#yyds干货盘点# 盘点Python中4种读取json文件和提取json文件内容的方法

Python 比较两个字典大小