2016-05-23 41 views
1

假设您有一对变量:request_dataresponse_data。 它们包含JSON/JSON数组数据,如果这些数据是相同的(即,dicts/lists不相同,所以它们不相等,但它们包含相同的数据),则需要检查它们。python:是否有一个众所周知的函数来标准化数据的JSON表示?

还有为Python类JSON数据比较的障碍:与数据日文N3 N4 N5可以是相等的,但由于他们是无序的,他们可能有不同的表示,如果我们比较他们的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} 
}]' 

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

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

+0

像'json.dumps(OrderedDict(sorted(data)))',但递归和识别列表内的字典。 –

回答

5

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

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

为了确保序列化是相互一致的,你可以使用keyword argument sort_keys

如果sort_keys是True(默认值:False),则词典的输出将被键排序。

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

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

0

使用json.loads将JSON转换为Python对象,然后进行比较。

相关问题