我编写了以下python代码来填充JSON文件。
import json
data = {}
data['people'] = []
for i in range(0,3):
data['people'].append({
'name': 'C%d'%(i),
'div':i,
'from': 'City%d'%(i)
})
with open('data.txt', 'w') as outfile:
json.dump(data, outfile)
但是,我的JSON文件如下所示:
{"people": [{"div":0,"from":,"City0":"name":"C0"},{"div":0,"from":,"City0":"name":"C0"}]}
我的输入顺序与输出的顺序不同。原因是什么,我该如何纠正?
答案 0 :(得分:0)
之类的输出,是因为json文件实际上并不关心它们的顺序,它们保存数据并与文件目录进行比较。只要您可以访问该文件,并且实际上是该文件,那么一切都很好。您或多或少都希望它完全是您使用json.dumps不可能输入的方式,如果您绝对需要那样,那么Id只需像这样
string='''{"people": [{#arange in order you want it}]}'''
并保存它,就像处理其他任何文件一样。
如果您希望对json进行排序,请尝试在Sorting Json
中找到的内容答案 1 :(得分:0)
您使用什么python版本?您创建了一个dict,但是在python 3.6之前,插入顺序不被保留。 In python 3.6的插入顺序得以保留,但被视为实现细节,因此不应依赖。 In python 3.7已宣布dict对象的插入顺序保留性质是Python语言规范的正式组成部分。 如果您使用的Python版本低于3.7,请使用集合中的OrderedDict。
import json
from collections import OrderedDict
data = {}
data['people'] = []
for i in range(0,3):
data['people'].append(OrderedDict((
('name', 'C%d' %(i)),
('div', i),
('from', 'City%d'%(i))
)))
with open('data.json', 'w') as outfile:
json.dump(data, outfile)
顺便说一句,为什么文件的扩展名是txt而不是json?没关系,而且与您的问题无关,但我很好奇。