使用sort_keys
参数ujson.dumps
的行为ujson
如下:
sort_keys=None
(如果省略,默认) - 以实现定义的顺序转储 dict 键,每次启动可能不同(但它很快)
sort_keys=True
- 在转储前对字典键进行排序
sort_keys=False
- 保留由提供的字典键顺序dict.items()
因此,要保留OrderedDict
with的顺序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=None
sort_keys=False
另请注意,尽管可以使用这些实现 (ujson
和json
) 保留键顺序,但它是非标准 JSON。见json.org:
对象是一组无序的名称/值对。