Python 比较两个JSON对象,而不考虑其中的元素顺序
python中是否有任何方法/class/module来比较两个json对象并打印更改/差异 我尝试过使用“json_工具”,它可以提供相当好的结果,但是如果在两个json对象中有包含不同顺序元素的python列表,diff就会失败 e、 g JSON 1: JSON 2: json diff显示两个json不匹配。。从逻辑上讲,这些是相同的Python 比较两个JSON对象,而不考虑其中的元素顺序,python,json,Python,Json,python中是否有任何方法/class/module来比较两个json对象并打印更改/差异 我尝试过使用“json_工具”,它可以提供相当好的结果,但是如果在两个json对象中有包含不同顺序元素的python列表,diff就会失败 e、 g JSON 1: JSON 2: json diff显示两个json不匹配。。从逻辑上讲,这些是相同的 在python中是否有一种很好的json匹配和比较方法 您可以尝试对json.dumps的结果进行区分(jobj,sort\u keys=True) 从逻
在python中是否有一种很好的json匹配和比较方法 您可以尝试对json.dumps的结果进行区分(jobj,sort\u keys=True) 从逻辑上讲,它们是相同的 他们不是。JSON数组中的顺序很重要。我不知道有什么工具会忽视你的订单。您可以尝试在反序列化结构上递归,将列表转换为某种类型的多集,并将dict转换为某种类型的可散列、冻结的dict(这样您就可以将它们放入多集),然后在此基础上运行您自己的diff例程。您可以使用 。。。假设json1和json2中加载了示例中的json条目(顺便说一句,“sex”条目后缺少逗号)。您可以与
ignore\u order=True一起使用
from deepdiff import DeepDiff
t1 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 2, 3]}}
t2 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 3, 2, 3]}}
ddiff = DeepDiff(t1, t2, ignore_order=True)
print (ddiff)
{}
我们如何通过忽略一些键来使用它?排序键
不会对JSON数组重新排序;它只影响JSON对象键值对的序列化顺序。t1的[1,2,3]和t2的[1,3,2,3]之间存在差异。为什么输出是空的???@AfsanAbdulaliGujarati如果您希望收到重复警告,可以添加report\u repeation=True
。看看他们的文档好答案!帮助我比较两个自动生成的json文件,并处理差异,直到diff
输出为空,就像我想要的那样。我发现这个链接更有用。这个链接也适用于json对象的嵌套数组吗?
{
'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',
}
]
}
}
from jsondiff import diff
diff(json1, json2)
from deepdiff import DeepDiff
t1 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 2, 3]}}
t2 = {1:1, 2:2, 3:3, 4:{"a":"hello", "b":[1, 3, 2, 3]}}
ddiff = DeepDiff(t1, t2, ignore_order=True)
print (ddiff)
{}