1. ホーム
  2. パイソン

[解決済み] [Solved] JSONをOrderedDictに読み込ませることはできますか?

2022-03-24 01:34:11

質問

では、OrderedDictを次のように使用することができます。 json.dump . つまり、OrderedDictはJSONの入力として使用することができます。

しかし、出力として使用することはできるのでしょうか?もしそうなら、どのように?私の場合、次のようにしたい。 load をOrderedDictに変換することで、ファイルのキーの順番を維持することができます。

そうでない場合、何か回避策はあるのでしょうか?

解決方法は?

はい、できます。 このように object_pairs_hook 引数を JSONDecoder . 実際、これはドキュメントに記載されている例と全く同じです。

>>> json.JSONDecoder(object_pairs_hook=collections.OrderedDict).decode('{"foo":1, "bar": 2}')
OrderedDict([('foo', 1), ('bar', 2)])
>>> 

このパラメータは json.loads (他の目的でDecoderインスタンスを必要としない場合)このようにします。

>>> 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
}
>>> 

使用方法 json.load も同じように行われます。

>>> data = json.load(open('config.json'), object_pairs_hook=OrderedDict)