python:有一个众所周知的函数来规范化数据的JSON表示吗?

Bor*_*kov 1 python json

假设,你有一对变量:request_dataresponse_data.它们包含JSON/JSON数组数据,您需要检查,如果这些数据是相同的(即dicts/lists不相同,所以它们不相等,但它们包含相同的数据).

python类JSON数据比较有一个障碍:数据的Dicts可能是相同的,但是由于它们是无序的,它们可能有不同的表示,如果我们比较它们json.dumps:

'[{
    "label": "JobName",
    "inputBinding": {"position": 1},
    "type": ["string"],
    "id": "displayName",
    "description": "SomeId to code sample"
}]'
    != 
'[{
    "id": "displayName",
    "label": "JobName",
    "description": "SomeId to code sample",
    "type": ["string"],
    "inputBinding": {"position": 1}
}]'
Run Code Online (Sandbox Code Playgroud)

某些库中是否存在一个众所周知的函数来规范化这些数据的表示?

它应该是递归的并且考虑嵌套的dicts和列表.

Łuk*_*ski 5

要比较这些对象,您需要比较加载的dicts.

assert json.loads(s1) == json.loads(s2)
Run Code Online (Sandbox Code Playgroud)

为确保序列化彼此一致,您可以使用关键字参数sort_keys.

如果sort_keys是True(默认值:) False,那么字典的输出将按键排序.

assert json.dumps(d1, sort_keys=True) == json.dumps(d2, sort_keys=True)
Run Code Online (Sandbox Code Playgroud)

如果d1 == d2,上述等式适用于任何可序列化数据(包括嵌套结构).