首頁 >後端開發 >Python教學 >使用「json.dumps」轉換 Python 字典時,如何控制 JSON 物件中鍵的順序?

使用「json.dumps」轉換 Python 字典時,如何控制 JSON 物件中鍵的順序?

Barbara Streisand
Barbara Streisand原創
2024-10-29 21:17:30962瀏覽

How can you control the order of keys in JSON objects when converting Python dictionaries using `json.dumps`?

使用「json.dumps」對JSON 物件中的項目重新排序

使用「json.dumps」函數轉換Python 時會出現JSON 物件中無序鍵的問題字典轉換為JSON 格式,導致意外的排序。會出現這種情況是因為 Python 字典和 JSON 物件都缺乏固有的排序。

為了解決這個問題,可以在「json.dumps」中使用「sort_keys」參數來按字母升序對鍵進行排序。這是一個範例:

<code class="python">import json

countries = [
    {"id": 1, "name": "Mauritius", "timezone": 4},
    {"id": 2, "name": "France", "timezone": 2},
    {"id": 3, "name": "England", "timezone": 1},
    {"id": 4, "name": "USA", "timezone": -4}
]

print(json.dumps(countries, sort_keys=True))</code>

這會產生帶有排序鍵的所需輸出:

<code class="json">[
  {"id": 1, "name": "Mauritius", "timezone": 4},
  {"id": 2, "name": "France", "timezone": 2},
  {"id": 3, "name": "England", "timezone": 1},
  {"id": 4, "name": "USA", "timezone": -4}
]</code>

另一個選項涉及使用「collections.OrderedDict」類,它維護鍵的順序-值對。以下是範例:

<code class="python">from collections import OrderedDict

countries = OrderedDict([
    ("id", 1),
    ("name", "Mauritius"),
    ("timezone", 4)
])

print(json.dumps(countries))</code>

這也會產生有序的JSON 輸出:

<code class="json">{"id": 1, "name": "Mauritius", "timezone": 4}</code>

從Python 3.6 開始,預設會保留關鍵字參數順序,從而提供了一種更簡化的方法實現所需的順序:

<code class="python">countries = {
    "id": 1,
    "name": "Mauritius",
    "timezone": 4
}

print(json.dumps(countries))</code>

最後,如果您的輸入以JSON 形式提供,則可以在“json.loads”中使用“object_pairs_hook”參數將順序保留為「OrderedDict」:

<code class="python">json_input = '{"a": 1, "b": 2}'

ordered_dict = json.loads(json_input, object_pairs_hook=OrderedDict)
print(ordered_dict)</code>

這可確保鍵值對保持在JSON 輸入中提供的原始順序。

以上是使用「json.dumps」轉換 Python 字典時,如何控制 JSON 物件中鍵的順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn