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