使用jq仅提取存在的指定fieldTag对应content值报错如何解决
问题原因
报错的核心是部分记录的varFields字段不存在或值为null,你直接执行.varFields[]迭代null值就触发了迭代错误。你后续修改的命令依旧没有提前处理varFields为null的场景,因此报错没有解决。
修正后的命令
(.varFields // [] | .[] | select(.fieldTag == "v") | "\(.content)") // ""
逻辑说明
- 第一步用
.varFields // []做兜底兼容:如果当前记录的varFields不存在、值为null,就统一替换为空数组,迭代空数组不会触发错误 - 第二步迭代数组内所有元素,筛选
fieldTag等于v的项,提取对应content值 - 最后如果没有筛选到任何符合条件的项,就返回空字符串,和你最初的需求一致
内容的提问来源于stack exchange,提问作者Kyle Banerjee
相关产品推荐
相关产品推荐

