「json.dumps」による JSON オブジェクト キーの順序付け
問題:
変換時「json.dumps」を使用して Python 辞書を JSON オブジェクトに変換すると、キーの順序が期待どおりにならない場合があります。必要な順序 (例: "id"、"name"、"timezone") が維持されていません。
解決策:
1.並べ替えキー:
希望のキー順序を指定するには、「sort_keys」パラメーターを「json.dumps」に渡します。このパラメータはキーを昇順に並べ替えます。
json.dumps(countries, sort_keys=True)
2. "OrderedDict" を使用します:
キーの順序を正確に制御するには、通常の辞書の代わりに "collections" モジュールの "OrderedDict" を使用します。 "OrderedDict" 内のキーの順序は、JSON への変換時に保持されます。
Python 3.7 以下:
import json from collections import OrderedDict ordered_countries = OrderedDict([("id", row.id), ("name", row.name), ("timezone", row.timezone)]) print(json.dumps(ordered_countries))
Python 3.8 以降:
import json from collections import OrderedDict ordered_countries = OrderedDict() ordered_countries["id"] = row.id ordered_countries["name"] = row.name ordered_countries["timezone"] = row.timezone print(json.dumps(ordered_countries))
3.入力順序の保持 (JSON):
入力がすでに JSON オブジェクトであり、出力でそのキー順序を保持したい場合は、「object_pairs_hook」パラメーターを「json.loads」に渡します。このパラメーターは、JSON オブジェクトのキーと値のペアに基づいて「OrderedDict」を返す呼び出し可能オブジェクトを受け取ります。
import json from collections import OrderedDict input_json = '{"a": 1, "b": 2}' ordered_json = json.loads(input_json, object_pairs_hook=OrderedDict)
以上が「json.dumps」を使用して Python 辞書を JSON に変換するときにキーの順序を制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。