如何用Python从JSON结构中提取包含SNAPSHOT的Line字段值
实现思路
该JSON结构的目标字段访问路径为:根对象 -> diffs数组 -> 单个diff对象 -> hunks数组 -> 单个hunk对象 -> segments数组 -> 单个segment对象 -> lines数组 -> 单个line对象 -> line字段,你只需要逐层遍历每个层级的数组,检查每个line字段是否包含关键词SNAPSHOT即可。
完整Python实现代码
import json # 若你的完整JSON数据存储在本地文件,用该方式加载 # 注意你给出的仅为diffs字段片段,完整合法JSON应为包裹在{}中的结构:{"diffs": [...]} with open("你的JSON文件路径.json", "r", encoding="utf-8") as f: data = json.load(f) # 若你的JSON是字符串格式,直接用以下方式加载即可 # data = json.loads("你的JSON字符串") matched_lines = [] # 逐层遍历嵌套结构 for diff in data.get("diffs", []): for hunk in diff.get("hunks", []): for segment in hunk.get("segments", []): for line_item in segment.get("lines", []): line_content = line_item.get("line", "") if "SNAPSHOT" in line_content: # 可以根据需求决定是否保留前后空白字符,这里用strip()去除了前后缩进 matched_lines.append(line_content.strip()) # 输出结果 print("匹配到的内容:") for line in matched_lines: print(line) # 本示例运行输出为:componente = '1.37.1-number-1234-SNAPSHOT'
注意事项
- 代码统一用
get方法获取字段值,避免某个层级缺少对应键时抛出异常,缺键默认返回空列表/空字符串,不影响遍历逻辑 - 可根据需求调整匹配规则,比如大小写不敏感匹配可以改成
"SNAPSHOT" in line_content.upper()
内容的提问来源于stack exchange,提问作者Thomaz Sousa
相关产品推荐
相关产品推荐

