Sí tu puedes. Al especificar el object_pairs_hook
argumento a JSONDecoder . De hecho, este es el ejemplo exacto dado en la documentación.
>>> json.JSONDecoder(object_pairs_hook=collections.OrderedDict).decode('{"foo":1, "bar": 2}')
OrderedDict([('foo', 1), ('bar', 2)])
>>>
Puede pasar este parámetro a json.loads
(si no necesita una instancia de Decoder para otros fines) así:
>>> 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
}
>>>
El uso json.load
se realiza de la misma manera:
>>> data = json.load(open('config.json'), object_pairs_hook=OrderedDict)
SingleNegationElimination
fuente
json.load
para usar OrderedDicts en lugar de Dicts en Python.