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

如何用jq按顺序展平JSON对象中的多个数组?

使用jq提取JSON中所有数组元素并保持原有顺序

原始JSON输入

{
  "Nemo": [
    3694756688,
    3694756832,
    3694756650
  ],
  "Firefox": [
    3694756795,
    3694756407,
    3694756412,
    3694756395
  ],
  "Codium": [
    3694756035,
    3694756383,
    3694756378
  ],
  "Terminals": [
    3694756804,
    3694756802,
    3694756428
  ]
}

(注:原始输入中Terminals数组的闭合括号缺失,已补全以保证JSON合法)

需求

将所有数组中的数值按原有顺序提取,每行输出一个数值,最终输出如下:

3694756688
3694756832
3694756650
3694756795
3694756407
3694756412
3694756395
3694756035
3694756383
3694756378
3694756804
3694756802
3694756428

jq实现命令

jq -r '.[] | .[]' input.json

命令解释

  • -r:开启原始输出模式,避免输出结果带引号
  • .[]:首先遍历顶层对象的所有值(也就是各个数组),jq 1.5及以上版本默认会保持对象键的插入顺序,因此数组的顺序和原始JSON完全一致
  • 第二个.[]:遍历每个数组中的元素,将每个数值单独输出

如果你的jq版本低于1.5,需要显式指定按原始顺序处理对象,可使用如下命令:

jq -r 'keys[] as $k | .[$k][]' input.json

keys[]会按对象键的插入顺序返回键名,再通过键名获取对应的数组并遍历元素,以此保证顺序符合要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:05:54