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

如何通过Bash或JQ按ID合并多文件中的JSON数据?

按ID合并多文件中的JSON对象

可以用以下jq命令实现按id字段合并多个文件中的JSON对象,合并test字段的内容:

jq -n '
  reduce inputs as $item ({};
    .[$item.id] += {test: $item.test}
  ) | to_entries[] | {id: .key, test: .value.test}
' file1.json file2.json file3.json

命令解释:

  • -n:禁用jq自动读取输入的默认行为,改用inputs处理所有输入文件的每一行JSON
  • reduce inputs as $item ({}; ...):遍历所有输入的JSON对象,以空对象作为初始容器,逐步累加合并结果
  • .[$item.id] += {test: $item.test}:以id为唯一标识,将当前对象的test属性合并到容器中对应id的test字段(jq的+=操作符会自动合并对象属性)
  • to_entries[]:将容器中的键值对(键为id,值为合并后的对象)转换为可遍历的数组元素
  • {id: .key, test: .value.test}:将每个数组元素格式化为你需要的最终JSON结构,输出结果

执行该命令后,会直接输出你期望的合并结果:

{"test":{"a":2,"b":3,"c":8},"id":"850303847"}
{"test":{"a":3,"b":3,"c":4},"id":"2742540872"}
{"test":{"a":4,"b":4,"c":5},"id":"1358887220"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:27:25