如何使用jq合并两个JSON文件并实现同键值覆盖与新键追加?
2026-4-28
使用jq合并JSON文件的解决方案
#
嘿,完全没问题!jq就是处理这类JSON合并需求的绝佳工具,实现起来简洁又精准,完美匹配你提出的“相同键用第二个文件值覆盖、新增键直接追加”的要求。
核心命令 #
假设你的两个JSON文件分别命名为
file1.json
和
file2.json
,执行这条命令就能完成合并:
jq -s '.[0] * .[1]' file1.json file2.json
命令细节解释 #
-
-s(--slurp)参数:会把多个输入的JSON文件打包成一个数组,.[0]对应第一个文件的JSON对象,.[1]对应第二个文件的JSON对象。 -
*操作符:jq里专门用来合并对象的操作符, 后面的对象会覆盖前面对象的同名键 ,同时自动保留两个对象中所有不重复的键——刚好契合你的需求。
用你的示例验证 #
我们拿你给出的具体内容测试一遍:
第一个文件
file1.json
内容:
{ "foo": "bar", "aaa": "aaa", "count": 0 }
第二个文件
file2.json
内容:
{ "bbb": "bbb", "count": 1 }
执行命令后,输出结果完全符合你的预期:
{
"foo": "bar",
"aaa": "aaa",