JSON を OrderedDict に読み込むことはできますか? 質問する

JSON を OrderedDict に読み込むことはできますか? 質問する

わかりました。 で OrderedDict を使用できますjson.dump。つまり、OrderedDict は JSON への入力として使用できます。

loadしかし、それを出力として使用できますか? できる場合、どのようにすればよいですか? 私の場合は、ファイル内のキーの順序を維持できるように、OrderedDict に入力したいと思います。

そうでない場合、何らかの回避策はありますか?

ベストアンサー1

はい、できます。object_pairs_hook引数を指定することでJSONデコーダー実際、これはドキュメントに記載されている例とまったく同じです。

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

おすすめ記事