將 JSON 載入 OrderedDict
在 JSON 中,資料儲存在鍵值對中。不保證這些對的順序。然而,在某些情況下,保持鍵的順序至關重要。問題來了:JSON可以載入到有序字典(OrderedDict)中嗎?
用object_pairs_hook解決方案
是的,JSON可以載入到OrderedDict中。這是透過向 JSONDecoder 建構函數指定 object_pairs_hook 參數來實現的。 object_pairs_hook 參數採用一個為 JSON 物件中的每對鍵和值所呼叫的函數。此函數可以傳回一個有序字典,確保保留鍵的順序。下面是一個範例:
import json from collections import OrderedDict data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict) print(json.dumps(data, indent=4))
輸出:
{ "foo": 1, "bar": 2 }
這是有效的,因為 object_pairs_hook 函數傳回 OrderedDict 物件,它維護鍵的順序。
替代使用json.load
同樣的方法可以應用在 json.load 函數:
data = json.load(open('config.json'), object_pairs_hook=OrderedDict)
以上是JSON 可以載入到 OrderedDict 中以保留鍵順序嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!