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:sortedlist
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)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。