Вопрос:
Я новичок в Python, и я играю с данными JSON. Я хотел бы получить данные JSON из файла и добавить к этим данным значение ключа JSON “на лету”.
То есть, мой json_file содержит данные JSON как-то следующие:
{«key1»: {«key1A»: [«value1», «value2»], «key1B»: {«key1B1»: «value3»}}}
Я хотел бы добавить часть ключевого значения «ADDED_KEY»: «ADDED_VALUE» к вышеуказанным данным, чтобы использовать следующий JSON в моем script:
{«ADDED_KEY»: «ADDED_VALUE», «key1»: {«key1A»: [«value1», «value2»], «key1B»: {«key1B1»: «value3»}}}
Я пытаюсь написать что-то вроде следующего для достижения вышеуказанного:
import json json_data = open(json_file) json_decoded = json.load(json_data) # What I have to make here?! json_data.close() Лучший ответ:
Ваш json_decoded объект – словарь Python; вы можете просто добавить свой ключ к этому, затем перекодировать и переписать файл:
import json with open(json_file) as json_file: json_decoded = json.load(json_file) json_decoded[‘ADDED_KEY’] = ‘ADDED_VALUE’ with open(json_file, ‘w’) as json_file: json.dump(json_decoded, json_file)
Я использовал открытые файловые объекты в качестве контекстных менеджеров здесь (с инструкцией with), поэтому Python автоматически закрывает файл по завершении.
Ответ №1
Json возвращается из json.loads() ведет себя как родные списки/словари python:
import json with open(«your_json_file.txt», ‘r’) as f: data = json.loads(f.read()) #data becomes a dictionary #do things with data here data[‘ADDED_KEY’] = ‘ADDED_VALUE’ #and then just write the data back on the file with open(«your_json_file.txt», ‘w’) as f: f.write(json.dumps(data, sort_keys=True, indent=4, separators=(‘,’, ‘: ‘))) #I added some options for pretty printing, play around with them!
Для получения дополнительной информации посетите официальный документ
Ответ №2
Вы можете сделать
json_decoded[‘ADDED_KEY’] = ‘ADDED_VALUE’
ИЛИ
json_decoded.update({«ADDED_KEY»:»ADDED_VALUE»})
который работает хорошо, если вы хотите добавить несколько пар ключ/значение.
Конечно, вы можете сначала проверить наличие ADDED_KEY – зависит от ваших потребностей.
И я предполагаю, что вы хотите, возможно, захотите сохранить эти данные обратно в файл
json.dump(json_decoded, open(json_file,’w’))