Есть ли способ вывести только данные с ключом 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 ...
Вернуться на верх