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

jq处理API数组数据时如何保留数组边界?

保留群组边界的jq数据处理方案

看起来你已经把成员数据的简化逻辑搞清楚了,就是缺了保留原群组层级结构的步骤对吧?之前的命令用.[].members[]直接把所有成员平铺,所以丢失了群组的数组边界。

要保留原有的群组数组结构,你只需要用map()来逐层处理数组,而不是直接展开它们:

核心命令

jq 'map(.members | map({name: .roomName, state: .state.playbackState, vol: .state.volume}))' input.json

命令解释

  • 外层的map(...):遍历原始的群组数组,对每个群组对象进行处理
  • .members | map(...):针对当前群组的成员数组,把每个成员转换成你需要的简化结构(提取roomName、playbackState和volume)
  • 整个命令会严格保留原始的数组层级:外层是群组数组,每个元素对应原群组的简化后成员数组

效果验证

处理3gr.json时

输入是3个群组,每个群组仅含1个成员,输出会是:

[
  [
    {
      "name": "Room1",
      "state": "STOPPED",
      "vol": 15
    }
  ],
  [
    {
      "name": "Room2",
      "state": "STOPPED",
      "vol": 40
    }
  ],
  [
    {
      "name": "Room3",
      "state": "STOPPED",
      "vol": 15
    }
  ]
]

处理1gr.json时

输入是1个群组,包含3个成员,输出会是:

[
  [
    {
      "name": "Room1",
      "state": "PAUSED_PLAYBACK",
      "vol": 44
    },
    {
      "name": "Room2",
      "state": "PAUSED_PLAYBACK",
      "vol": 54
    },
    {
      "name": "Room3",
      "state": "PAUSED_PLAYBACK",
      "vol": 41
    }
  ]
]

完全匹配你期望的两种输出格式!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:18:03