使用sort_keys参数ujson.dumps
的行为ujson如下:
sort_keys=None(如果省略,默认) - 以实现定义的顺序转储 dict 键,每次启动可能不同(但它很快)
sort_keys=True- 在转储前对字典键进行排序
sort_keys=False- 保留由提供的字典键顺序dict.items()
因此,要保留OrderedDictwith的顺序ujson,您需要sort_keys=False.
测试
这是您可以检查它的方法:
import sys
import ujson
order = None
if len(sys.argv) == 2:
order = bool(int(sys.argv[1]))
mainDict = OrderedDict([('c',3),('b',2),('a',1)])
sys.stdout.write(ujson.dumps(mainDict, sort_keys=order))
测试:
$ python order.py # sort_keys=None
{"c":3,"a":1,"b":2}
$ python order.py # sort_keys=None
{"b":2,"c":3,"a":1}
$ python order.py 1 # sort_keys=True
{"a":1,"b":2,"c":3}
$ python order.py 0 # sort_keys=False
{"c":3,"b":2,"a":1}
笔记
请注意,与 不同ujson的是,内置模块使用和json保留键顺序。sort_keys=Nonesort_keys=False
另请注意,尽管可以使用这些实现 (ujson和json) 保留键顺序,但它是非标准 JSON。见json.org:
对象是一组无序的名称/值对。