「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python の「json.dumps」を使用して JSON キーの順序を制御するにはどうすればよいですか?

Python の「json.dumps」を使用して JSON キーの順序を制御するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:735

 How to Control JSON Key Order with Python\'s `json.dumps`?

「json.dumps」使用時の JSON キーの順序の不一致

Python では、JSON 変換では多くの場合、「json.dumps」を利用して変換する必要があります。辞書を JSON オブジェクトに変換します。ただし、ユーザーは、予想されるシーケンス (ID、名前、タイムゾーン) が実際の出力 (タイ​​ムゾーン、ID、名前) と異なるため、結果として得られる JSON キーの順序に不一致が発生する可能性があります。

この問題を解決し、希望のキー順序には、

1 の 2 つのアプローチが利用可能です。 「sort_keys」パラメータの使用:

「sort_keys」パラメータを True に設定すると、JSON キーがアルファベット順に並べ替えられます。たとえば、次のコード スニペットは、目的のキー順序を生成します:

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)

2. OrderedDict:

Python の「collections.OrderedDict」を使用すると、キーの挿入順序が保持されます。 OrderedDict を利用することで、期待どおりのキー順序を実現できます。

from collections import OrderedDict

countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4

json_data = json.dumps(countries)
print(json_data)

Python 3.6 以降では、キーワード引数の順序がデフォルトで保持され、より簡潔な構文が可能になります。

json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)

最後に、JSON 入力の場合、「object_pair_hook」パラメーターを利用してオブジェクトの順序を保持し、OrderedDict:

import json

json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3