Python中是否可以通过变量存储的JSON路径获取对应数据?
解决方案
不要将取值路径存储为字符串格式,依赖eval执行不仅有安全隐患,也不方便后续调试和异常处理。你可以把路径的每一层拆分为元组元素存储,搭配一个通用的嵌套取值函数即可实现需求。
基础实现代码
1. 定义通用取值函数
def extract_by_path(data, path): current_node = data for segment in path: current_node = current_node[segment] return current_node
2. 调整路径字典的存储格式
paths_to_data = { "author": ("Items", 0, "AttributeSets", 0, "Author"), "actor": ("Items", 0, "AttributeSets", 0, "Actor"), "format": ("Items", 0, "AttributeSets", 0, "Format") }
3. 批量提取字段
api_response = api_request(query) cleaned_response = {} for field_name, path in paths_to_data.items(): cleaned_response[field_name] = extract_by_path(api_response, path)
可选容错优化
如果部分路径可能不存在,你可以给函数增加异常捕获逻辑,匹配不到时返回默认值,避免程序直接报错:
def extract_by_path(data, path, default=None): try: current_node = data for segment in path: current_node = current_node[segment] return current_node except (KeyError, IndexError, TypeError): return default
内容的提问来源于stack exchange,提问作者JBN
相关产品推荐
相关产品推荐

