如何將 JSON 轉換為 Ordereddict?


JSON(JavaScript 物件表示法)是一種流行的系統之間資料交換格式。它是一種輕量級、基於文字且易於解析的格式,已成為網際網路上資料交換的標準。但是,JSON 不會為資料結構中的元素提供任何順序。雖然在大多數情況下這可能不是問題,但在某些情況下,元素的順序很重要。

另一方面,OrderedDict 是 Python 中內建 dict 類的子類,它維護字典中鍵的順序。順序由將鍵插入字典的順序決定。這使得它在元素順序很重要的場合很有用,例如建立配置檔案或按特定順序處理資料時。

將 JSON 轉換為 OrderedDict 包括解析 JSON 字串並使用 JSON 中出現的順序建立一個新的 OrderedDict 物件。有幾種方法可以實現這一點,包括使用 Python 中的內建 json 模組或使用第三方庫,如simplejsonujson

在本文中,我們將探討在 Python 中將 JSON 轉換為 OrderedDict 的各種方法。我們將討論每種方法的優缺點,並提供示例來演示如何使用它們。在文章結束時,您將更好地理解如何將 JSON 轉換為 OrderedDict,並能夠為您的特定用例選擇最佳方法。

既然我們已經詳細討論了 ordereddict 和 JSON,那麼讓我們探索我們可以用來實現 JSON 到 ordereddict 的轉換的兩種不同方法。

使用 json.loads() 和 object_pairs_hook

  • Python 中的 json 模組提供了一個 loads() 方法來解析 JSON 字串並將其轉換為 Python 物件。

  • loads() 的 object_pairs_hook 引數可用於指定一個可呼叫物件,該物件將使用 JSON 物件項的有序對列表進行呼叫。

  • 我們可以將 OrderedDict 建構函式傳遞給 object_pairs_hook 以建立包含 JSON 中出現的順序的項的 OrderedDict。

以下是我們使用上述方法將 JSON 轉換為 Ordereddict 可以使用的一些步驟。

  • 匯入 json 模組和 collections 模組中的 OrderedDict 類。

  • 使用 json.loads() 解析 JSON 字串,並將 object_pairs_hook 引數設定為 OrderedDict。

  • 生成的 Python 物件將是一個 OrderedDict,其元素按 JSON 中出現的順序排列。

現在讓我們為同一個編寫程式碼。

示例

import json
from collections import OrderedDict

json_str = '{"name": "John", "age": 30, "city": "New York"}'
ordered_dict = json.loads(json_str, object_pairs_hook=OrderedDict)
print(ordered_dict)

輸出

OrderedDict([('name', 'John'), ('age', 30), ('city', 'New York')])

使用 ast.literal_eval() 和 OrderedDict

  • Python 中的 ast 模組提供了一個 literal_eval() 函式,可用於安全地評估包含 Python 字面量(包括字典)的字串。

  • 我們可以將 JSON 字串傳遞給 literal_eval() 以建立字典,然後將字典傳遞給 OrderedDict 建構函式以建立包含字典中出現的順序的項的 OrderedDict。

以下是我們使用上述方法將 JSON 轉換為 Ordereddict 可以使用的一些步驟。

  • 匯入 ast 模組和 collections 模組中的 OrderedDict 類。

  • 將 JSON 字串傳遞給 ast.literal_eval() 以建立字典。

  • 將生成的字典傳遞給 OrderedDict 建構函式以建立包含字典中出現的順序的元素的 OrderedDict。

現在讓我們為同一個編寫程式碼。

示例

import ast
from collections import OrderedDict

json_str = '{"name": "John", "age": 30, "city": "New York"}'
dictionary = ast.literal_eval(json_str)
ordered_dict = OrderedDict(dictionary.items())
print(ordered_dict)

輸出

OrderedDict([('name', 'John'), ('age', 30), ('city', 'New York')])

這兩種方法都是有效的,可用於在 Python 中將 JSON 轉換為 OrderedDict。選擇哪種方法可能取決於個人喜好、效能考慮或用例的具體要求。

結論

總之,JSON 是一種流行的網際網路資料交換格式,但它不會為資料結構中的元素提供任何順序。另一方面,OrderedDict 是 Python 中內建 dict 類的子類,它維護字典中鍵的順序。

這兩種方法都是有效的,可用於在 Python 中將 JSON 轉換為 OrderedDict。選擇哪種方法可能取決於個人喜好、效能考慮或用例的具體要求。

透過理解本文中討論的方法,您可以輕鬆地在 Python 中將 JSON 轉換為 OrderedDict,並利用在資料結構中維護元素順序的優勢。

更新於: 2023年8月4日

811 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告