ホームページ >バックエンド開発 >Python チュートリアル >「json.dumps」を使用して Python 辞書を変換するときに、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 として提供される場合、「object_pairs_hook」引数を「json.loads」内で使用して順序を「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 中国語 Web サイトの他の関連記事を参照してください。