在很多情况下,我们需要比较两个数据之间的差异。如果只是针对数值对象,那么两者的区别就是所谓的区别,但是如果要比较两个JSON数据的区别呢?由于JSON数据具有嵌套和分层的特点,如果想清楚的找出两个JSON数据的区别并加以描述,自己写方法还是有点麻烦。这种情况下,我们可以使用第三方库deepdiff中的DeepDiff()方法,它基于递归对不同对象进行深度比较。使用pipinstalldeepdiff完成安装后,可以直接通过deepdiffimportDeepDiff导入需要的函数来比较两个JSON对象的差异。下面是一个简单的例子:fromdeepdiffimportDeepDiffobj1={'level1':[{'level1-1':1,'level1-2':1,'level1-3':[{'level1-3-1':[1,2,3]}]}],'level2':'a'}obj2={'level1':[{'level1-1':1,'level1-2':1,'level1-3':[{'level1-3-1':[1,2,1]}]}],'level2':'b'}DeepDiff(obj1,obj2)可以看到具体的差异内容和具体位置在打印的测试结果中声明,这可以帮助我们进行其他后续处理。另外,deepdiff还有非常丰富的附加功能,比如忽略指定类型数据的比较校验:或者通过定义层次规则,让DeepDiff()跳过指定位置元素的差异校验:还支持使用正则的表达式定义要忽略的模糊层次规则。例如,在下面的示例中,我们使用常规批处理来忽略多个键值对:限制浮点数的检查精度。例如,在下面的例子中,在限制significant_digits=2之后,小数点后第二个数字后的差值被忽略:
