Есть ли способ вывести только данные с ключом json в python?
пытаюсь распечатать json в python
"rules":[
{
"table":"Forest",
"format":"List",
"header":{"en":"Forest","fr":"Forêt"},
"fields":[
{
"name":"Name",
"displayName":{"en":"Forest","fr":"Forêt"}
},
{
"name":"ForestMode",
"displayName":{"en":"Forest Mode","fr":"Mode forêt"},
"ok":"re.search('Windows(2019|2016)Forest',x) != None",
"warn":"re.search('Windows(2012R2|2012)Forest',x) != None",
"nok":"re.search('Windows(2008R2|2008|2003|2003Interim|2000)Forest',x) != None",
"comment":{"en":"Increase the functional level of the forest","fr":"Augmenter le niveau fonctionnel de la forêt"}
},
{
"name":"RootDomain",
"displayName":{"en":"Root Domain","fr":"Domaine racine"}
},
{
"name":"Domains",
"displayName":{"en":"Domains","fr":"Domaines"}
},
{
"name":"Sites",
"displayName":{"en":"Sites","fr":"Sites"}
},
{
но я столкнулся с проблемой некоторые из json данных не имеют ключа, а некоторые имеют. Я написал это на данный момент
with open('./rules-adds.json', 'r') as ad_file:
ad_data = json.load(ad_file)
# print(ad_data)
data = ad_data["rules"]
# print(data)
# print(json.dumps(ad_data, indent=4))
for x in data:
print(x['table'], x['fields'])
for y in x['fields']:
print(y['name'])
Но я получаю ошибку, так как первый элемент json файла не имеет ключа "ok"
print(y['ok'])
KeyError: 'ok'
Ответ:
Вы можете использовать функцию get словаря:
my_value = my_dict.get('some_key_name', 'in_case_not_found')
Таким образом, my_value
будет содержать существующее значение или значение по умолчанию, которое вы определите в случае, если ключ не существует в словаре
Вы также можете проверить, существует ли ключ, с помощью if:
if 'some_key_name' in my_dict:
print(my_dict['some_key_name'])
else:
print('Well, key is not there')
Дополнительный совет:
- Убедитесь, что вы анем ваших переменных настолько описаны, насколько это возможно.
Так
for field in fields
...,for attribute in my_dictionary
...