#python #json
#python #json
Вопрос:
У меня есть такой файл JSON.
{
"posts": [{
"id": 0,
"title": "title1",
"author": "CIQ",
"views": 100,
"reviews": 31
}],
"authors": [{
"id": 0,
"first_name": "Commerce",
"last_name": "IQ",
"posts": 45
}]
}
Я хочу записать значения во вложенных дочерних элементах JSON, например. Добавьте следующий пост и сохраните тот же файл JSON.
{
"id": 1,
"title": "title2",
"author": "CIQ2",
"views": 100,
"reviews": 31
}
Конечный файл будет выглядеть следующим образом.
{
"posts": [{
"id": 0,
"title": "title1",
"author": "CIQ",
"views": 100,
"reviews": 31
}, {
"id": 1,
"title": "title2",
"author": "CIQ2",
"views": 100,
"reviews": 3
}],
"authors": [{
"id": 0,
"first_name": "Commerce",
"last_name": "IQ",
"posts": 45
}]
}
Я использую приведенный ниже скрипт для записи файла.
with open(file_path, 'r ') as json_file:
data = json.load(json_file)
data['posts'].append(new_post)
json_file.write(json.dumps(data, ensure_ascii=True))
проблема с этим скриптом заключается в том, что он добавляет данные после конца файла. как показано на рисунке.
Пожалуйста, предложите какой-нибудь подход.
Ответ №1:
проблема с этим скриптом заключается в том, что он добавляет данные после конца файла.
Да, это то, что r
означает mode. Пожалуйста, ознакомьтесь с документацией.
Пожалуйста, предложите какой-нибудь подход
Прочитайте файл с помощью mode r
, внесите изменения, а затем перезапишите файл с помощью mode w
(в отдельном with
блоке).
Ответ №2:
мы можем сделать это, прочитав и записав его отдельно.
with open(file_path, 'r') as data_file:
data = json.load(data_file)
data['posts'].append(new_post)
with open(file_path, 'w') as data_file:
data = json.dump(data, data_file)