如何从JSON中过滤空对象空数组 提取Jenkins构建分支SHA1信息
Jenkins JSON 数据过滤解决方案
你可以直接在遍历逻辑中增加前置判断自动过滤无效数据,无需提前手动修改原始JSON文件,完整实现代码如下:
import json with open('jenkinsBuild.json') as f: data = json.load(f) target_branch = "refs/remotes/xyz/feature/demo_xyz" for action in data['actions']: # 过滤空对象,对应问题1 if not action: continue # 过滤不含lastBuiltRevision字段的对象,对应问题2 if 'lastBuiltRevision' not in action: continue # 过滤空branch数组,对应问题3 branch_list = action['lastBuiltRevision'].get('branch', []) if not branch_list: continue # 匹配目标分支 for branch_data in branch_list: if branch_data.get('name') == target_branch: print(f"Name: {branch_data['name']}, SHA1: {branch_data['SHA1']}")
逻辑说明
- 空对象判断:Python中
{}空字典的布尔值为False,if not action会直接跳过所有空对象 - 字段存在性判断:通过
in关键字判断字典是否包含指定key,不存在就直接跳过当前对象,避免取key时报KeyError - 空数组判断:用字典的
get方法取branch字段时设置默认空数组,再判断数组长度是否为0,空数组直接跳过不会进入内层遍历
另外代码中使用branch_data.get('name')而非直接取branch_data['name'],也可以避免部分分支数据缺名字段的报错问题,兼容性更强。
内容的提问来源于stack exchange,提问作者jayveersolanki
相关产品推荐
相关产品推荐

