「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