Python json.loads更改对象的顺序
我有一个包含JSON对象的文件。已通过以下方式加载:
with open('data.json', 'r') as input_file: input_data = input_file.read()
此时,input_data仅包含一个字符串,现在我将其解析为JSON:
data_content = json.loads(input_data.decode('utf-8'))
data_content具有我需要的字符串的JSON表示形式,但是由于某种原因,在json.loads之后我不清楚,它改变了键的原始顺序,例如,如果我的文件包含以下内容:
{ "z_id": 312312, "fname": "test",
"program": "none",
"org": null
}
在json.loads之后,顺序更改为类似以下内容:
{ "fname": "test", "program": None,
"z_id": 312312,
"org": "none"
}
为什么会这样呢?有办法保留订单吗?我正在使用Python 2.7。
回答:
python中的字典(对象)没有保证的顺序。因此,当解析为时dict
,订单将丢失。
如果订单是出于某种原因很重要,你可以json.loads
使用一个OrderedDict
替代,这就好比dict
,但键的顺序保存。
from collections import OrderedDictdata_content = json.loads(input_data.decode('utf-8'), object_pairs_hook=OrderedDict)
以上是 Python json.loads更改对象的顺序 的全部内容, 来源链接: utcz.com/qa/411078.html