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

如何用jq从对象数组中提取值组成数组的数组

将JSON对象数组转换为值的二维数组

输入JSON

[
  {
    "k1": "o1k1",
    "k2": "o1k2",
    "k_opt1": "o1k_xxx"
  },
  {
    "k1": "o2k1",
    "k2": "o2k2",
    "k_opt2": "o2k_yyy"
  }
]

期望输出

[
  [
    "o1k1",
    "o1k2",
    "o1k_xxx"
  ],
  [
    "o2k1",
    "o2k2",
    "o2k_yyy"
  ]
]

问题分析

之前使用的jq命令 .[] | to_entries[].value 会把所有对象的元素值平铺输出——.[] 展开了外层数组,to_entries[].value 又展开了每个对象的取值,最终得到的是单个值的序列,而非目标二维数组。

解决方案

使用以下jq命令即可实现需求:

jq 'map(values)' input.json

或者等价的显式写法:

jq 'map([to_entries[].value])' input.json

命令说明

  • map():遍历输入数组中的每个对象,对每个对象执行括号内的表达式
  • values:jq内置函数,直接提取对象的所有值并组成数组,是[to_entries[].value]的简洁替代
  • 最终map()会将每个对象转换后的数组收集起来,形成外层的二维数组

验证结果

执行命令后,输出与期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:01:01