我试着用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
…