如何使用jq合并两个JSON文件并实现同键值覆盖与新键追加?
使用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", "count": 1, "bbb": "bbb" }
进阶技巧:保存结果到文件
如果需要把合并后的内容直接存到新文件,加个重定向就行:
jq -s '.[0] * .[1]' file1.json file2.json > merged.json
内容的提问来源于stack exchange,提问作者Piotr Lisiowski
相关产品推荐
相关产品推荐

