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 OrderedDict

data_content = json.loads(input_data.decode('utf-8'), object_pairs_hook=OrderedDict)

以上是 Python json.loads更改对象的顺序 的全部内容, 来源链接: utcz.com/qa/411078.html

回到顶部