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

如何使用jq实现JSON对象内的同主键数据分组合并

解决方案

你提供的原始JSON存在重复的顶层id键,标准JSON解析器默认会直接覆盖重复键的内容,仅保留最后一个同键名的值,所以必须使用jq的流解析模式才能保留所有内容完成合并。

具体实现命令

# 将输入文件合并后输出到终端
jq -n --stream 'reduce (inputs | select(length == 2)) as $i ({}; setpath($i[0]; $i[1]))' input.json

# 如果需要将结果写入新文件,追加重定向即可
jq -n --stream 'reduce (inputs | select(length == 2)) as $i ({}; setpath($i[0]; $i[1]))' input.json > output.json

命令说明

  • -n:初始化空对象作为最终输出的基准,不直接读取输入作为默认处理对象
  • --stream:启用流模式解析JSON,不会丢弃重复的顶层键,会将每个JSON节点拆分为「路径数组+对应值」的结构输出
  • reduce (inputs | select(length == 2)) as $i ({}; ...):遍历所有流输出的有效节点(过滤掉节点结束标记),初始值为空对象,逐节点处理
  • setpath($i[0]; $i[1]):根据流输出的路径数组,直接将值写入目标对象的对应层级,相同id下的不同day内容会自动合并,不会出现覆盖丢失的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:04