zoukankan      html  css  js  c++  java
  • 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,也可以根据自己的需要进行改进。

  • 相关阅读:
    Vue路由重定向
    Vue使用rules对表单字段进行校验
    CSS Flex弹性布局实现Div
    Leetcode5 最长回文子串
    Java中char与String的相互转换
    [剑指offer] 替换空格
    Leetode最长回文串
    JavaScript 常用正则表达式集锦
    JavaScript 函数节流
    JavaScript target 与 currentTarget 区别
  • 原文地址:https://www.cnblogs.com/snailon/p/12577176.html
Copyright © 2011-2022 走看看