OrderedDict への JSON の読み込み
JSON では、データはキーと値のペアに格納されます。これらのペアの順序は保証されません。ただし、特定のシナリオでは、キーの順序を維持することが重要です。 JSON は順序付き辞書 (OrderedDict) にロードできますか?
object_pairs_hook による解決策
はい、JSON は OrderedDict にロードできます。これは、JSONDecoder コンストラクターに object_pairs_hook 引数を指定することによって実現されます。 object_pairs_hook 引数は、JSON オブジェクト内のキーと値のペアごとに呼び出される関数を受け取ります。この関数は、キーの順序が確実に保持されるように、順序付けされた辞書を返すことができます。以下は例です:
import json from collections import OrderedDict data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict) print(json.dumps(data, indent=4))
出力:
{ "foo": 1, "bar": 2 }
これは、object_pairs_hook 関数がキーの順序を維持する OrderedDict オブジェクトを返すため機能します。
別の使用法json.load
同じアプローチを json.load 関数に適用できます。
data = json.load(open('config.json'), object_pairs_hook=OrderedDict)
以上がJSON を OrderedDict にロードしてキーの順序を維持できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。