码迷,mamicode.com
首页 > 编程语言 > 详细

python diff json方法

时间:2020-03-26 21:20:32      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:python   http   输出   imp   com   array   表示   测试   demo   

在测试过程中经常会对比两个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方法

标签:python   http   输出   imp   com   array   表示   测试   demo   

原文地址:https://www.cnblogs.com/snailon/p/12577176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!