使用jq提取JSON中test为true的字段失败,求修复方案
jq提取test字段为true的条目修复方案
错误原因
- 原命令先执行了
.[].name,得到的是字符串类型的值(比如"AA"),后续试图对字符串做.[].test迭代操作,这会触发“无法迭代字符串”的错误 - JSON中的
test字段是布尔类型(true/false),不是字符串,不能用"true"进行匹配
正确命令示例
- 提取整个符合条件的条目
jq '.[] | select(.test == true)' ddd
执行结果:
{ "name": "BB", "program_url": "https://yahoo.com", "test": true }
- 仅提取符合条件的name字段值
jq '.[] | select(.test == true) | .name' ddd
执行结果:
"BB"
逻辑说明
先通过.[]遍历数组中的每个对象,再用select(.test == true)筛选出test字段为布尔true的对象,最后按需提取目标字段或保留整个对象。
内容的提问来源于stack exchange,提问作者nora
相关产品推荐
相关产品推荐

