python中有没有什么方法/ class / module可以比较两个json对象并打印出变化/差异?
我已经尝试了“json_tools”,它给出了相当好的结果,但是如果在两个json对象中存在元素顺序不同的python列表,diff将失败。
例如:
JSON 1:
{
'Person' :
{
'FName' : 'John',
'LName' : 'Rambo',
'Sex' : 'Male'
'Height' : '6 ft',
'Weight' : '90 KG',
'Children' :
[
{
'FName' : 'Anna',
'LName' : 'Rambo',
'Sex' : 'Female',
'Height' : '5 ft',
'Weight' : '55 KG',
},
{
'FName' : 'Jemmy',
'LName' : 'Rambo',
'Sex' : 'Male',
'Height' : '5 ft',
'Weight' : '60 KG',
}
]
}
}
JSON 2:
{
'Person' :
{
'FName' : 'John',
'LName' : 'Rambo',
'Sex' : 'Male'
'Height' : '6 ft',
'Weight' : '90 KG',
'Children' :
[
{
'FName' : 'Jemmy',
'LName' : 'Rambo',
'Sex' : 'Male',
'Height' : '5 ft',
'Weight' : '60 KG',
},
{
'FName' : 'Anna',
'LName' : 'Rambo',
'Sex' : 'Female',
'Height' : '5 ft',
'Weight' : '55 KG',
}
]
}
}
json diff显示两个json不匹配。逻辑上它们是相同的。
python中有没有json匹配和比较的好方法?
4条答案
按热度按时间0mkxixxg1#
您可以使用jsondiff
......假设json1和json2加载了示例中的json条目(顺便说一下,在'sex'条目后面缺少一个逗号)。
oaxa6hgo2#
你可以使用
ignore_order=True
的深度差异y53ybaqx3#
逻辑上它们是相同的。
它们不是。JSON数组中的顺序很重要。我不知道有什么工具会忽略顺序。你可以尝试在反序列化的结构上递归,将列表转换成某种多重集,将dict转换成某种可散列的冻结dict(这样你就可以将它们放入多重集),然后在上面运行你自己的diff例程。
92vpleto4#
您可以尝试对
json.dumps(jobj, sort_keys=True)
的结果进行比较