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

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

Barbara Streisand
發布: 2024-10-29 21:17:30
原創
961 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板