将 JSON 对象写回 .json 文件,顺序为 Python
Write a JSON object back to .json file with order in Python
当我向 JSON 文件添加一个属性时,我希望对其字典进行排序。所以,我用这个:
data[player] = json.loads(thisdata, object_pairs_hook=OrderedDict)
这工作正常,除了我尝试将数据(JSON 对象)写回 .json 文件的情况。
这里,json对象==数据
file = open("testJSON.json", 'w+')
output = ""
for x in range(0, len(str(jsonObj))):
if (str(jsonObj)[x] == "{"):
output = output + "{" + "\n"
elif (str(jsonObj)[x] == "}"):
output = output + "\n" + "}" + "\n"
elif (str(jsonObj)[x] == ","):
output = output + "," + "\n"
elif (str(jsonObj)[x] == "\'"):
output = output + "\""
else:
output = output + str(jsonObj)[x]
file.write(output)
file.close()
.json输出文件是这样的:
{
"Noob": OrderedDict([("HP",
10),
("MP",
5),
("STR",
6)]),
"Saber": {
"STR": 10,
"MP": 50,
"HP": 100
}
,
"Archer": {
"STR": 8,
"MP": 40,
"HP": 80
}
}
如您所见,OrderedDict 在这种情况下不起作用。
我知道我可以手动解析这个字符串,但这太痛苦了,而且可能不是最有效的方法。
是否有任何有效的方法可以使用有序字典写回 .json 文件?
一个JSON文件不能真正表明字典是否应该被排序;但是,您可以通过 json.dump
很好地 写入 具有 OrderedDict
的文件,并且应该保留 键的顺序:
with open("testJSON.json", 'w') as f:
json.dump(jsonObj, f)
如果你想要更漂亮的输出,例如添加 indent=4
:
with open("testJSON.json", 'w') as f:
json.dump(jsonObj, f, indent=4)
当我向 JSON 文件添加一个属性时,我希望对其字典进行排序。所以,我用这个:
data[player] = json.loads(thisdata, object_pairs_hook=OrderedDict)
这工作正常,除了我尝试将数据(JSON 对象)写回 .json 文件的情况。
这里,json对象==数据
file = open("testJSON.json", 'w+')
output = ""
for x in range(0, len(str(jsonObj))):
if (str(jsonObj)[x] == "{"):
output = output + "{" + "\n"
elif (str(jsonObj)[x] == "}"):
output = output + "\n" + "}" + "\n"
elif (str(jsonObj)[x] == ","):
output = output + "," + "\n"
elif (str(jsonObj)[x] == "\'"):
output = output + "\""
else:
output = output + str(jsonObj)[x]
file.write(output)
file.close()
.json输出文件是这样的:
{
"Noob": OrderedDict([("HP",
10),
("MP",
5),
("STR",
6)]),
"Saber": {
"STR": 10,
"MP": 50,
"HP": 100
}
,
"Archer": {
"STR": 8,
"MP": 40,
"HP": 80
}
}
如您所见,OrderedDict 在这种情况下不起作用。
我知道我可以手动解析这个字符串,但这太痛苦了,而且可能不是最有效的方法。
是否有任何有效的方法可以使用有序字典写回 .json 文件?
一个JSON文件不能真正表明字典是否应该被排序;但是,您可以通过 json.dump
很好地 写入 具有 OrderedDict
的文件,并且应该保留 键的顺序:
with open("testJSON.json", 'w') as f:
json.dump(jsonObj, f)
如果你想要更漂亮的输出,例如添加 indent=4
:
with open("testJSON.json", 'w') as f:
json.dump(jsonObj, f, indent=4)