Can I get JSON to load into an OrderedDict?

前端 未结 6 1021
别跟我提以往
别跟我提以往 2020-11-22 01:13

Ok so I can use an OrderedDict in json.dump. That is, an OrderedDict can be used as an input to JSON.

But can it be used as an output? If so how? In my

6条回答
  •  悲哀的现实
    2020-11-22 02:04

    Yes, you can. By specifying the object_pairs_hook argument to JSONDecoder. In fact, this is the exact example given in the documentation.

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

    You can pass this parameter to json.loads (if you don't need a Decoder instance for other purposes) like so:

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

    Using json.load is done in the same way:

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

提交回复
热议问题