我正在尝试使用JSON对象的数据构建列表。但是,列表的顺序与JSON对象的顺序不匹配,并且几乎在每次运行代码时都会更改。
{
"project":{
"Projektnamen":{
"Server":{
"Server1":{
...
},
"Server2":{
...
},
"Server3":{
...
}
}
}
}
}
with open('json_data.json') as json_file:
# json CONFIG_JSON Konfigurationsdatei
CONFIG_JSON = json.load(json_file)
for key in CONFIG_JSON["project"]["Projektnamen"]["Server"]:
servernamen.append(key)
预期结果:servernamen = [Server1,Server2,Server3]
但是顺序总是在变化。 最后结果:servernamen = [Server3,Server1,Server2]
答案 0 :(得分:1)
您可以导入已经使用collections.OrderedDict
和json.load
的参数进行排序的JSON数据:
from collections import OrderedDict
import json
r = json.load(open('json_data.json'), object_pairs_hook=OrderedDict)
答案 1 :(得分:0)
json.loads
将JSON反序列化为字典对象,该对象是未排序的哈希表。
您可以使用OrderedDict
中的collections
对键进行排序。
例子
from collections import OrderedDict
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
new_d = OrderedDict(sorted(d.items()))
print(new_d)
# OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])