python diff json方法
Posted snailon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python diff json方法相关的知识,希望对你有一定的参考价值。
在测试过程中经常会对比两个json的异同,如果当json串较长时,一个一个的对比显然是很浪费时间的。
所以写一个比较json异同的测试方法是很有必要的。
下面介绍一下比较json异同的两种方法,以及测试demo。
json_tools
首先介绍下python的类库 json_tools
安装:pip install json_tools
比较json
import json_tools def jsonDiff(): a={\'left\': 1, \'right\': "r","box":"b"} b={\'left\': 1, \'right\': "R","boxs":"box"} result=json_tools.diff(a,b) print result if __name__ == \'__main__\': jsonDiff()
结果:
[{\'prev\': \'b\', \'remove\': \'/box\'}, {\'prev\': \'r\', \'value\': \'R\', \'replace\': \'/right\'}, {\'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\'}
多层嵌套的对比
输出为:
[{\'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串
可以输出不同的value,也可以根据自己的需要进行改进。
以上是关于python diff json方法的主要内容,如果未能解决你的问题,请参考以下文章