「json.dumps」使用時の JSON キーの順序の不一致
Python では、JSON 変換では多くの場合、「json.dumps」を利用して変換する必要があります。辞書を JSON オブジェクトに変換します。ただし、ユーザーは、予想されるシーケンス (ID、名前、タイムゾーン) が実際の出力 (タイムゾーン、ID、名前) と異なるため、結果として得られる JSON キーの順序に不一致が発生する可能性があります。
この問題を解決し、希望するキーの順序には、次の 2 つのアプローチが利用可能です:
1. 「sort_keys」パラメータの使用:
「sort_keys」パラメータを True に設定すると、JSON キーがアルファベット順に並べ替えられます。たとえば、次のコード スニペットは、目的のキー順序を生成します:
<code class="python">import json countries = [] countries.append({"id": 1, "name": "Mauritius", "timezone": 4}) countries.append({"id": 2, "name": "France", "timezone": 2}) countries.append({"id": 3, "name": "England", "timezone": 1}) countries.append({"id": 4, "name": "USA", "timezone": -4}) json_data = json.dumps(countries, sort_keys=True) print(json_data)</code>
2。 OrderedDict の使用:
Python の "collections.OrderedDict" はキーの挿入順序を保持します。 OrderedDict を利用することで、期待されるキーの順序を実現できます:
<code class="python">from collections import OrderedDict countries = OrderedDict() countries["id"] = 1 countries["name"] = "Mauritius" countries["timezone"] = 4 json_data = json.dumps(countries) print(json_data)</code>
Python 3.6 以降では、キーワード引数の順序がデフォルトで保持され、より簡潔な構文が可能になります:
<code class="python">json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4)) print(json_data)</code>
最後に、JSON 入力の場合、「object_pair_hook」パラメーターを利用してオブジェクトの順序を保持し、OrderedDict を生成できます:
<code class="python">import json json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict) print(json_data)</code>
以上がPython の「json.dumps」を使用して JSON キーの順序を制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。