2016-05-23 13 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對象,然後進行比較。

相關問題