Seb*_*ian 12 python json python-2.7
我有一个包含JSON对象的文件.它已按以下方式加载:
with open('data.json', 'r') as input_file:
input_data = input_file.read()
Run Code Online (Sandbox Code Playgroud)
此时input_data只包含一个字符串,现在我继续将其解析为JSON:
data_content = json.loads(input_data.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
data_content具有字符串的JSON表示,这是我需要的,但由于某些原因,在json.loads之后我不清楚它正在改变键的原始顺序,所以例如,如果我的文件包含如下内容:
{ "z_id": 312312,
"fname": "test",
"program": "none",
"org": null
}
Run Code Online (Sandbox Code Playgroud)
在json.loads之后,订单被改变为让我们说:
{ "fname": "test",
"program": None,
"z_id": 312312,
"org": "none"
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?有没有办法保存订单?我正在使用Python 2.7.
Roc*_*mat 22
python中的字典(对象)没有保证顺序.因此,当解析为a时dict,订单将丢失.
如果订单由于某种原因很重要,您可以json.loads使用OrderedDict替代,这类似于a dict,但保存了键的顺序.
from collections import OrderedDict
data_content = json.loads(input_data.decode('utf-8'), object_pairs_hook=OrderedDict)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5527 次 |
| 最近记录: |