Я пытаюсь проверить, существует ли ключ в файле Json. имя ключа является дочерним, и в некоторых случаях оно существует, а в некоторых нет. пример 1 - ключ не существует:
"customfield_11723": {
"self": "https://ies-data-jira.ies.data.com/rest/api/2/custom/16110",
"value": "DATA_MDM",
"id": "16110",
"disabled": false
},
пример 2 - ключ существует:
"customfield_11723": {
"self": "https://ies-data-jira.ies.data.com/rest/api/2/customFieldOption/16118",
"value": "DATA_QM",
"id": "16118",
"disabled": false,
"child": {
"self": "https://ies-data-jira.ies.data.com/rest/api/2//16124",
"value": "Installation",
"id": "16124",
"disabled": false
}
Ключевой путь в файле json: ['issues]['fields']['customfield_11723']['child'] Мой код выглядит так:
for i in todos['issues']:
if i['fields']['customfield_11723']['child'] in i['fields']['customfield_11723']:
print("True"
когда я запускаю это в случае, когда «дочерний элемент» не существует, исключение выдается на ketError: «child»
Вы можете изменить запрос на if i['fields']['customfield_11723'].get('child'). Это возвращает None, если он не найден, вместо того, чтобы выдавать ошибку.






Проверьте наличие ключа с помощью метода keys() dict:
if "child" in i["fields"]["customfield_11723"].keys():
print(True)
Метод keys() возвращает список всех ключей в словаре.
Вы даже можете опустить .keys(), и это тоже сработает.
если "ребенок" в i["fields"]["customfield_11723"] будет достаточно
в вашем конкретном случае вам нужно будет спросить:
# .keys() is optional but more explicit
if "child" in i['fields']['customfield_11723'].keys():
print("True")
Лично я бы попробовал использовать оператор моржа в сочетании с методом dict.get() в таких ситуациях:
if child := i['fields']['customfield_11723'].get("child"):
print(child)
Вы можете проверить, существует ли ключ в словаре с помощью ключевого слова in. При желании вы можете попытаться получить доступ к ключу в блоке кода try/except KeyError. Другой способ - использовать get() в словаре.