2016-08-15 81 views
0

我读在一个JSON文件使用python,然后在对象内以阵列追加,这是的Python追加在文件JSON对象,后卫如果对象不存在

"additional_info": {"other_names": ["12.13"] 

我的形状追加数组如下:

data["additional_info"]["other_names"].append('13.9') 
with open('jsonfile', 'w') as f: 
    json.dump(data, f) 

我想设置一个后卫,以检查是否ADDITIONAL_INFO和other_names在JSON文件是否存在,如果没有的话创建它。我会如何去做这件事?

+0

“我想成立一​​个卦rd来检查json文件中是否存在additional_info和other_names,如果它不存在,则创建它“这已经是默认行为。你的意思是如果它已经存在,你不想追加到列表中? – DeepSpace

+0

如果我尝试在没有additional_info或other_names的文件上运行此操作,我得到一个关键错误 –

回答

1

通常我会用嵌套try-except检查每个丢失钥匙或defaultdict,但在这种情况下,我想我会用2个if语句去为简单起见:

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

with open('jsonfile', 'w') as f: 
    json.dump(data, f) 

两个用例:

data = {} 

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

print(data) 
>> {'additional_info': {'other_names': ['13.9']}} 

而且

data = {"additional_info": {"other_names": ["12.13"]}} 

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

print(data) 
>> {'additional_info': {'other_names': ['12.13', '13.9']}} 
+0

这为我解答,谢谢! –