这两个JSON en Python字典(都是JSON对象)都是无序的。因此,实际上这样做没有 任何 意义,因为JSON编码器可以更改顺序。
但是,您可以定义一个自定义JSON解码器,然后使用该解码器进行解析。因此,这里的字典hook willl是
OrderedDict:
from json import JSonDeprerfrom collections import OrderedDictcustomdeprer = JSonDeprer(object_pairs_hook=OrderedDict)
然后,您可以使用以下代码进行解码:
customdeprer.depre(your_json_string)
因此,这会将项目存储在
OrderedDict而不是字典中。但是请注意,如前所述,JSON对象的键顺序未指定。
另外,您也可以将钩子传递给
loads函数:
from json import loadsfrom collections import OrderedDictloads(your_json_string, object_pairs_hook=OrderedDict)
更新 :从python-3.7开始,字典保留插入顺序。所以,如果一个应用中的python-3.7,标准
json.load和json.loads应该正常工作。但是请注意,JSON对象仍然是无序的,因此Javascript端可以按任何顺序加载/转储该对象。


![json.loads()不保持顺序[重复] json.loads()不保持顺序[重复]](http://www.mshxw.com/aiimages/31/659876.png)
