ホームページ >バックエンド開発 >Python チュートリアル >「json.dumps」を使用して Python 辞書を変換するときに、JSON オブジェクト内のキーの順序を制御するにはどうすればよいですか?

「json.dumps」を使用して Python 辞書を変換するときに、JSON オブジェクト内のキーの順序を制御するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 21:17:30961ブラウズ

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 として提供される場合、「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。