Попытка добавить во вложенный файл json
Моя цель - добавить некоторые значения в файл JSON.
Вот мой оригинальный файл JSON
{
"web": {
"all": {
"side": {
"tags": [
"admin"
],
"summary": "Generates",
"operationId": "Key",
"consumes": [],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "YES",
"schema": {
"type": "string"
}
}
},
"Honor": [
{
"presidential": []
}
]
}
}
}
}
Я намерен добавить две дополнительные строки в ключ «Уважение» со значениями «Обязательно»: «ДА» и «Предоплата»: «НЕТ». В результате добавления двух значений у меня будет следующий файл JSON.
{
"web": {
"all": {
"side": {
"tags": [
"admin"
],
"summary": "Generates",
"operationId": "Key",
"consumes": [],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "YES",
"schema": {
"type": "string"
}
}
},
"Honor": [
{
"presidential": [],
"Required" : "YES",
"Prepay" : "NO"
}
]
}
}
}
}
Ниже приведен код Python, который я написал
import json
def write_json(data,filename = "exmpleData.json"):
with open(filename,"w") as f:
json.dump(data,f,indent=2)
with open ("exmpleData.json") as json_files:
data= json.load(json_files)
temp = data["Honor"]
y = {"required": "YES","type": "String"}
temp.append(y)
write_json(data)
Я получаю следующее сообщение об ошибке:
** temp = data["Честь"] KeyError: 'Честь' ** Я был бы признателен за любое руководство, которое вы можете предоставить, чтобы помочь мне достичь моей цели. Я использую Python 3.7
Возможный дубликат: stackoverflow.com/questions/70782902/…
temp = данные ['Интернет']['все']['сторона']['Честь']






'Honor' глубоко вложен в другие словари, и его значение представляет собой список из 1 элемента, содержащий словарь. Вот как получить доступ:
import json
def write_json(data, filename='exmpleData.json'):
with open(filename, 'w') as f:
json.dump(data, f, indent=2)
with open('exmpleData.json') as json_files:
data = json.load(json_files)
# 'Honor' is deeply nested in other dictionaries
honor = data['web']['all']['side']['Honor']
# Its value is a 1-element list containing another dictionary.
honor[0]['Required'] = 'YES'
honor[0]['Prepay'] = 'NO'
write_json(data)
Я бы порекомендовал вам немного больше практиковать свои основы, поскольку вы делаете много ошибок при обработке структуры данных. Хорошей новостью является то, что ваша загрузка/дамп JSON в порядке.
Причиной вашего сообщения об ошибке является то, что данные не имеют свойства «Честь». Данные имеют только свойство "web", которое содержит "all", которое содержит "side", которое содержит "Honor", которое содержит массив со словарем, содержащим свойства, которые вы пытаетесь добавить. Итак, вы хотите установить температуру с помощью temp = data['web']['all']['side']['Honor'][0]
Вы также не можете использовать добавление к словарям Python. Вместо этого проверьте dict.update().
Ключ
"Honor"находится на несколько уровней ниже в структуре. Вам придется добраться туда по одному.