わかりました。 で 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)