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

如何使用jq合并两个无关联的JSON数组?

按索引合并两个无关联JSON数组

我有两个无关联的JSON数组文件:info.json和keywords.json,需要按数组索引一一对应合并,生成results.json。之前找到的方案都要求两个JSON有关联字段,现求可行方法。

原始文件内容

info.json

[
  {
    "filename": "drilldown.json",
    "line": 14,
    "column": "43-49"
  },
  {
    "filename": "drilldown.json",
    "line": 10,
    "column": "38-44"
  }
]

keywords.json

[
  {
    "keyword": " `master1` "
  },
  {
    "keyword": " `Master2` "
  }
]

期望合并结果(results.json)

[
  {
    "filename": "drilldown.json",
    "line": 14,
    "column": "43-49",
    "keyword": " `master1` "
  },
  {
    "filename": "drilldown.json",
    "line": 10,
    "column": "38-44",
    "keyword": " `Master2` "
  }
]

解决方案

方法1:Python脚本

通用场景适用,无额外工具依赖,逻辑清晰:

import json

# 读取两个JSON文件
with open('info.json', 'r') as f:
    info_data = json.load(f)
with open('keywords.json', 'r') as f:
    keywords_data = json.load(f)

# 按索引合并数组内的对象
merged_data = []
for info, keyword in zip(info_data, keywords_data):
    merged_item = {**info, **keyword}
    merged_data.append(merged_item)

# 写入结果文件
with open('results.json', 'w') as f:
    json.dump(merged_data, f, indent=2)

运行脚本后即可生成目标文件,若两个数组长度不一致,zip会以较短数组的长度为准。

方法2:jq命令行工具

适合命令行用户,无需编写脚本,一行命令完成:

jq -n '[inputs] | transpose | map(add)' info.json keywords.json > results.json

命令说明:

  • -n:不默认读取输入为JSON,手动构建处理逻辑
  • [inputs]:将两个输入文件的内容收集为数组
  • transpose:转置数组,把两个数组的对应索引元素配对
  • map(add):将每一对对象合并
  • 最终结果重定向到results.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:09:55