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

如何使用jq将两个JSON文件中的对象数组合并为单个数组?

我来帮你搞定这两个JSON文件的合并问题!首先得明确你想要的合并类型,我分两种常见场景给你解决方案:

场景1:直接拼接两个JSON数组

如果只是想把registration.json和useredits.json里的所有对象合并成一个大数组,用这条jq命令就够了:

jq -s 'add' registration.json useredits.json

简单解释下:-s参数会把两个输入文件的内容读取成一个包含两个数组的大数组,add操作则会把这两个数组合并成一个完整的数组。

场景2:根据共同字段合并对应对象

如果你的需求是把两个数组里同标识的对象合并(比如用useredits里的编辑内容覆盖或补充registration里的原始数据),假设每个对象都有唯一的id字段作为标识,试试这条命令:

jq -s 'group_by(.id) | map(add)' registration.json useredits.json

逻辑是这样的:

  • group_by(.id)会把两个数组里的所有对象按id分组,同一个id的对象会被归到同一个子数组里
  • map(add)会把每个子数组里的对象合并成一个,后面的对象字段会覆盖前面的(刚好符合编辑内容覆盖原始数据的需求)
排查之前的问题

你之前用的方法出问题,大概率是这几个原因:

  • 没指定正确的分组字段:如果你的对象不是用id作为唯一标识,记得把命令里的.id换成你实际用的字段,比如.user_id
  • JSON格式不合法:先检查两个文件是不是标准的JSON数组,用jq . registration.json和jq . useredits.json可以快速验证格式是否正确
  • 合并逻辑不匹配:如果你的需求就是保留所有重复元素,那应该用场景1的拼接命令,而不是分组合并

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:37:52