最近遇到一个大坑,在测一个程序的时候。程序接受的数据是json,但是要求json是有序的(吐槽一样,要求有序的用json干屁啊!)
当我用python构造字典的时候,总会给我排序,用json.dumps
转化为json后。导致程序解析失败。所以,在此研究了一下如何构造有序的json。
网上查了一下,用到了python中有序字典OrderdDict
,在collections
库中。
在默认情况下:
>>> d= {}
>>> d["2"]=2
>>> d["1"]=1
>>> d["3"]=3
>>> d
{'1': 1, '3': 3, '2': 2}
>>> json.dumps(d)
'{"1": 1, "3": 3, "2": 2}'
使用OrderedDict
后:
>>> import collections
>>> d = collections.OrderedDict()
>>> d["2"]=2
>>> d["1"]=1
>>> d["3"]=3
>>> d
OrderedDict([('2', 2), ('1', 1), ('3', 3)])
>>> import json
>>> json.dumps(d)
'{"2": 2, "1": 1, "3": 3}'