是否有一种方法可以在python中只打印json键的数据?



我试着用python打印一个json

"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

最新更新