Skip to main content
 首页 » 编程设计

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

2025年05月04日27emanlee

假设,您有一对变量:request_data和 response_data . 它们包含 JSON/JSON 数组数据,您需要检查这些数据是否相同(即字典/列表不相同,因此它们不相等,但它们包含相同的数据)。

Python 类 JSON 数据比较存在一个障碍:具有数据的字典可能相等,但由于它们是无序的,如果我们比较它们的 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} 
}]' 

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

它应该是递归的并且考虑嵌套的字典和列表。

请您参考如下方法:

要比较这些对象,您需要比较加载的字典。

assert json.loads(s1) == json.loads(s2) 

为确保序列化彼此一致,您可以使用 keyword argument sort_keys .

If sort_keys is True (default: False), then the output of dictionaries will be sorted by key.

assert json.dumps(d1, sort_keys=True) == json.dumps(d2, sort_keys=True) 

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