Неправильно записывается JSON в файл
Код:
import json
def test(key, val):
xs = open('test.json', 'r+')
x = xs.read()
y = {key:val}
z = json.loads(x)
z.update(y)
xs.seek(0)
xs.truncate(0)
json.dump(json.dumps(z, indent=4), xs)
test('testing', 'testers')
До выполнения кода test.json выглядит вот так:
{
"one": "two"
}
После выполнения кода уже вот так:
"{\n \"one\": \"two\",\n \"testing\": \"testers\"\n}"
Как я могу нормально записать json данные без \n и прочего лишнего?
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Вот здесь вы сначала словарь превращаете в json-строку (метод dumps), потом эту строку еще раз преобразовываете в json (метод dump):
json.dump(json.dumps(z, indent=4), xs)
Нужно использовать один из этих методов, но не оба одновременно.
Для записи объекта в файл в виде json используйте метод dump:
json.dump(z, xs, indent=4)
Тот же самый результат можно получить преобразовав словарь в json-строку, потом записав эту строку в файл с помощью write:
xs.write(json.dumps(z, indent=4))