Python比较2个json数据是否相等


1、json数据转换成字典

dict1 = json.load(load_f1) dict2 = json.load(load_f2)

2、将两个字典按key排好序,然后使用zip()函数将两个字典对应的key打包成元组。比较对应的key的value是否相等。

for src_list, dst_list in zip(sorted(dict1), sorted(dict2)): if str(dict1[src_list]) != str(dict2[dst_list]): print(src_list,dict1[src_list],dst_list,dict2[dst_list])

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。

如果数据格式为:

dict1 = {"id": "100", "name": "苹果", "info": {"uid":"2020","phoneName":["一代","苹果12"]}}
dict2 = {"id": "100", "name": "华为", "info": {"uid":"2020","phoneName":["一代","Mate40"]}}

使用递归函数进行处理

def cmp(src_data, dst_data): if isinstance(src_data, dict): """若为dict格式"""
        for key in dst_data: if key not in src_data: print("src不存在这个key") for key in src_data: if key in dst_data: """递归""" cmp(src_data[key], dst_data[key]) else: print("dst不存在这个key") elif isinstance(src_data, list): """若为list格式"""
        if len(src_data) != len(dst_data): print("list len: '{}' != '{}'".format(len(src_data), len(dst_data))) for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)): """递归""" cmp(src_list, dst_list) else: if str(src_data) != str(dst_data): print(src_data) dict1 = {"id": "100", "name": "苹果", "info": {"uid": "2020", "phoneName": ["一代", "苹果12"]}} dict2 = {"id": "100", "name": "华为", "info": {"uid": "2020", "phoneName": ["一代", "Mate40"]}} cmp(dict1, dict2)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM