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 notin 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)
以上是 Python比较2个json数据是否相等 的全部内容, 来源链接: utcz.com/z/537817.html