You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JQ对JSON数组对象做多条件筛选提取对应ID的问题

修正后的查询语句

jq '.[0] | select(.name == "build_job" and .status == "success" and any(.artifacts[]; .file_type == "archive" and .size > 0)) | .id'

逻辑说明

你之前的写法存在两个问题:

  1. 直接用.artifacts[].file_type == "archive"只能判断数组中存在archive类型的元素,无法关联校验同一个元素的size字段
  2. 直接用.artifacts[]展开数组的写法,在多匹配场景下会导致输出重复结果

修正方案用jq内置的any()函数实现需求:

  • any()的第一个参数是要遍历的artifacts数组元素
  • 第二个参数是单个元素需要满足的组合判断条件,只要数组中存在至少一个元素同时满足「file_type为archive、size大于0」,就会返回true

如果你的业务场景要求所有archive类型的artifact的size都大于0,把any替换为all即可。


内容的提问来源于stack exchange,提问作者SylvainB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:24:05