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,也可以根據自己的需要進行改進。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM