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

如何用jq 1.6在bash脚本中分解JSON数组?

使用jq 1.6拆分JSON数组对象

问题描述

现有包含如下内容的JSON文件(假设名为input.json):

[
  {
    "names": [
      "name1"
    ],
    "id": "1"
  },
  {
    "names": [
      "name1",
      "name2"
    ],
    "id": "2"
  }
]

需要生成新JSON文件,将每个原对象按names数组拆分,得到如下结构:

[
  {
    "name": "name1",
    "id": "1"
  },
  {
    "name": "name1",
    "id": "2"
  },
  {
    "name": "name2",
    "id": "2"
  }
]

解决方案

在bash脚本中使用以下jq命令即可完成转换:

jq '[ .[] | . as $item | $item.names[] | {name: ., id: $item.id} ]' input.json > output.json

命令解释

  • []:将所有处理后的对象包裹成最终的JSON数组
  • .[]:遍历原JSON数组中的每个对象
  • . as $item:将当前遍历到的原对象存入变量$item,方便后续引用其id字段
  • $item.names[]:遍历当前原对象中names数组的每个元素
  • {name: ., id: $item.id}:构造新的JSON对象,name字段取当前names数组元素,id字段沿用原对象的id值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:55:25