Python 比较两个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中是否有任何方法/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)

从逻辑上讲,它们是相同的

他们不是。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)
{}