python中是否有任何方法/类/模块来比较两个json对象并打印更改/差异?
我尝试过使用“json_tools”,这会产生相当不错的结果,但是如果有两个json对象中有不同顺序元素的python列表,则diff会失败。
e.g。
{
'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',
}
]
}
}
{
'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显示两个jsons不匹配..逻辑上它们是相同的..
在python中有没有一种好的json匹配和比较方法?
答案 0 :(得分:4)
逻辑上那些是相同的。
他们不是。订单在JSON数组中很重要。我不知道任何会忽略你的订单的工具。您可以尝试对反序列化结构进行递归,将列表转换为某种多重集,并将其转换为某种可清除的冻结字典(因此您可以将它们放入多个集合中),然后在其上运行自己的diff例程。
答案 1 :(得分:4)
答案 2 :(得分:3)
您可以尝试对json.dumps(jobj,sort_keys = True)的结果进行差异
答案 3 :(得分:1)
您可以将deepdiff与 ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = @"C:\PsTools\psexec.exe";
info.Arguments = @"\\" + "MyComputerName" + @" -h D:\Idealake\Schedulers\SBIHangFireConsole\bin\Debug\SBIHangFireConsole.exe";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);
一起使用
ignore_order=True