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

Azure DevOps Linux构建代理中jq筛选JSON数据的问题求助

解决jq筛选、字段提取与排序的问题

你遇到的核心问题有两个:一是比较运算符使用错误(用了赋值符号=而非相等判断==),二是select的位置不正确。以下是修正后的两种可行命令:

方式一:先筛选再提取字段(效率更高)

在遍历.value数组时,先筛选出result为succeeded的元素,再提取所需字段,最后按日期排序:

jq '[.value[] | select(.result == "succeeded") | {id: .id, date: .finishedDate, state: .state, result: .result}] | sort_by(.finishedDate)' $(Build.SourcesDirectory)/test2.json

方式二:先提取字段再筛选

先提取所有元素的目标字段,再从生成的新数组中筛选符合条件的条目,最后排序(这里可以直接用重命名后的date字段排序):

jq '[.value[] | {id: .id, date: .finishedDate, state: .state, result: .result}] | map(select(.result == "succeeded")) | sort_by(.date)' $(Build.SourcesDirectory)/test2.json

关键注意事项

  • jq中判断相等必须用==,用=会被解析为赋值操作,直接导致筛选逻辑失效或语法报错。
  • 要确保select作用于正确层级:如果在遍历单个数组元素时使用,需放在处理单元素的管道中;如果在整个数组层面筛选,要用map遍历数组内的每个元素做判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:17:05