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

如何用jq筛选JIRA Insights API JSON中指定条件的属性值?

仅用jq就能实现你的需求,完全不需要额外工具!

我来给你拆解具体的实现逻辑和命令:

首先,你的数据是同一实体(按objectId区分)的多个属性条目,核心思路是先按objectId分组,再在每个组里判断是否满足objectTypeAttributeId=911且状态为Active的条件,最后提取你需要的属性值。

具体jq命令

假设你的JSON数据保存在data.json文件中,运行以下命令即可:

# 按objectId分组,遍历每个分组
group_by(.objectId)[]
# 筛选出包含符合条件的911属性的分组
| select(any(.[]; .objectTypeAttributeId == 911 and .objectAttributeValues[0].status.name == "Active"))
# 提取需要的信息,构造输出对象
| {
    "objectId": .[0].objectId,
    "attr_887_value": (.[] | select(.objectTypeAttributeId == 887) | .objectAttributeValues[0].value),
    # 替换XXX为你想要的另一个objectTypeAttributeId,name字段根据实际JSON结构调整
    "attr_XXX_name": (.[] | select(.objectTypeAttributeId == XXX) | .name)
  }

命令解释

  1. group_by(.objectId)[]:把所有属性条目按objectId归类到同一组,确保我们处理的是同一个实体的所有属性。
  2. select(any(.[]; ...)):检查当前分组里是否存在满足条件的条目——也就是objectTypeAttributeId=911,且其status.name为"Active"。
  3. 构造输出对象:
    • objectId:取分组内任意条目的objectId(同组所有条目都属于同一个实体)。
    • attr_887_value:筛选出分组内objectTypeAttributeId=887的条目,提取它的value值。
    • attr_XXX_name:替换XXX为你指定的另一个objectTypeAttributeId,如果你的JSON里该属性条目有name字段就直接提取;如果是要提取value,就把.name改成.objectAttributeValues[0].value。

针对你提供的JSON片段的测试结果

用你给出的示例数据运行命令(假设提取objectTypeAttributeId=888的value),输出会是:

{
  "objectId": 9036,
  "attr_887_value": "false",
  "attr_888_value": "false"
}

额外注意事项

  • 如果某个实体缺少887或指定的目标属性,jq会返回null,如果想过滤掉这类情况,可以在select里追加判断条件,比如select(any(.[]; .objectTypeAttributeId == 887))。
  • 如果objectAttributeValues数组可能包含多个元素,你可以调整提取逻辑,比如用.objectAttributeValues[].value获取所有值,或者用first(.objectAttributeValues[]?.value)确保取第一个有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:29:38