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

如何基于数组值使用JQ筛选JSON中的指定数据项

使用jq筛选符合在线ID条件的成员数据

原始JSON数据如下:

{ 
  "data": {
    "all": {
      "members": [
        {
          "id": 10,
          "name": "First"
        },
        {
          "id": 12,
          "name": "Second"
        },
        {
          "id": 14,
          "name": "Third"
        }
      ],
      "live": {
        "online": [
          10,
          14
        ]
      }
    }
  }
}

需求是筛选出data.all.members中id存在于data.all.live.online数组里的成员,并输出指定格式的JSON。

可以使用以下jq命令实现:

jq '(.data.all.live.online | INDEX(.)) as $online | { members: [.data.all.members[] | select($online[.id])] }' input.json

命令说明:

  1. (.data.all.live.online | INDEX(.)) as $online:将在线ID数组转换为以ID为键的对象(例如{"10":10, "14":14}),后续判断ID是否存在时效率更高,尤其适合在线ID数量较多的场景。
  2. { members: [.data.all.members[] | select($online[.id])] }:构建目标JSON结构,遍历所有成员,仅保留ID存在于$online对象中的元素,最终组成members数组。

执行命令后,输出结果如下:

{
  "members": [
    {
      "id": 10,
      "name": "First"
    },
    {
      "id": 14,
      "name": "Third"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:21:36