gpt4 book ai didi

Python json.loads改变对象的顺序

转载 作者:太空狗 更新时间:2023-10-29 18:16:37 26 4
gpt4 key购买 nike

我有一个包含 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改变对象的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com