如何用命令实现主JSON文件覆盖合并两个JSON文件?
使用jq命令实现JSON合并(主文件覆盖子文件)
你可以使用jq这个命令行JSON处理工具来轻松实现需求,它支持递归合并JSON对象,且后传入的文件会覆盖前一个文件的对应键值(包括嵌套结构)。
命令示例
假设你的子JSON文件名为child.json,主JSON文件名为parent.json,执行以下命令即可得到合并结果:
jq -s '.[0] * .[1]' child.json parent.json
命令解释
-s:将多个输入的JSON文件读取为一个数组,.[0]对应第一个文件(子JSON),.[1]对应第二个文件(主JSON)*:jq的合并操作符,会递归合并两个对象,后面对象的键会覆盖前面对象的同名键,嵌套层级的键也会按此规则处理
验证结果
用你提供的示例文件测试:child.json内容:
{ "test": { "test1": true, "test2": { "test3": [1, 2, 3] } } }
parent.json内容:
{ "test": { "test2": null, "test3": "string" }, "test2": "newValue" }
执行命令后输出的合并结果:
{ "test": { "test1": true, "test2": null, "test3": "string" }, "test2": "newValue" }
完全符合预期。
内容的提问来源于stack exchange,提问作者Владислав Пестриков
相关产品推荐
相关产品推荐

