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

如何使用jq合并相同SysID的JSON对象并将Name转为数组值?

用jq按SysID分组JSON对象并整理Name为数组

需求说明

现有一组多行JSON对象:

{
  "SysID": "12345",
  "Name": "abc"
}
{
  "SysID": "12345",
  "Name": "def"
}
{
  "SysID": "23456",
  "Name": "hij"
}
{
  "SysID": "23456",
  "Name": "klm"
}
{
  "SysID": "23456",
  "Name": "nop"
}

需要将这些对象按SysID字段分组,以SysID的值作为键,对应的所有Name值整理为数组,最终输出如下格式的JSON:

{
  "12345": [
    "abc",
    "def"
  ],
  "23456": [
    "hij",
    "klm",
    "nop"
  ]
}

jq实现命令

使用以下命令即可完成转换(假设原始数据保存在input.json文件中):

jq -n 'reduce inputs as $item ({}; .[$item.SysID] += [$item.Name])' input.json

命令解析

  • -n:指定jq以“null输入模式”运行,允许通过inputs关键字逐个读取输入中的每个独立JSON对象,而非将所有输入视为单个JSON数组。
  • reduce inputs as $item ({}; ...):通过reduce遍历每个输入的JSON对象(赋值给变量$item),初始累加值为一个空对象{}。
  • .[$item.SysID] += [$item.Name]:对每个对象,将其Name值添加到结果对象中以$item.SysID为键的数组内。如果该键尚未存在,jq会自动创建对应数组并添加元素。

注:jq生成的JSON不会包含示例中的尾逗号,这是符合JSON规范的标准格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:30:59