0x00 前言

最近遇到一个大坑,在测一个程序的时候。程序接受的数据是json,但是要求json是有序的(吐槽一样,要求有序的用json干屁啊!)

当我用python构造字典的时候,总会给我排序,用json.dumps转化为json后。导致程序解析失败。所以,在此研究了一下如何构造有序的json。

0x01 解决

网上查了一下,用到了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}'