Когда я добавляю один атрибут в мой файл JSON, я хочу упорядочить его словарь.Итак, я использую это:
data[player] = json.loads(thisdata, object_pairs_hook=OrderedDict)
Это работает нормально, за исключением случая, когда я пытаюсь записать данные (объект JSON) обратно в файл .json.
Здесь, jsonObj == данные
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 с упорядоченным словарем?