import json
1. 根据路径取值
def check_key_dict_value(json_data,defalut_value,keys=[]):
if not json_data: return defalut_value
for key in keys:
if key in json_data.keys():
json_data = json_data[key]
else:
return defalut_value
return json_data
json_data0={'key1':{'key2':{'key3':93,'key4':15}}}
result=check_key_dict_value(json_data0,defalut_value=0,keys=['key1','key2','key3'])
2. 未知路径取单个值
def check_key_dict_list_value(json_data,key):
if isinstance(json_data, list):
for i in json_data:
if key in str(i): return check_key_dict_list_value(i,key=key)
elif isinstance(json_data,dict):
for k,v in json_data.items():
if k == key:
return v
if key in str(v):
return check_key_dict_list_value(v,key=key)
else:
try:
return check_key_dict_list_value(json.loads(json_data),key=key)
except:return
json_data1={'key1':{'key2':[{'key3':93,'key4':15}]}}
json_data1={'key1':{'key2':[{'key3':93,'key4':15}]}}
result1 = check_key_dict_list_value(json_data1,key='key4')
print(result1)
3. 未知路径取所有key名的值
def check_key_dict_list_value(json_data, key, lis):
if isinstance(json_data, list):
for i in json_data:
if key in str(i):
check_key_dict_list_value(i, key,lis)
elif isinstance(json_data, dict):
if json_data.get(key) != None:
lis.append(json_data[key])
else:
for k, v in json_data.items():
if key in str(v):
check_key_dict_list_value(v, key,lis)
else:
try:
check_key_dict_list_value(json.loads(json_data),key,lis)
except:
return
lis = []
json_data1={'key1':{'key2':[{'key3':93,'key4':15},{'key3':93,'key4':15}]}}
check_key_dict_list_value(json_data1, 'key4', lis)
print(lis)
本文介绍了解析复杂JSON数据的方法,包括根据指定路径获取值、在未知路径中查找特定键值及收集所有匹配键的所有值。适用于后端开发人员处理复杂的API响应数据。
2784

被折叠的 条评论
为什么被折叠?



