如何使用JQ将另一JSON文件的对象写入目标文件的指定嵌套字段
解决方案
假设你的第一个JSON文件命名为file1.json,第二个JSON文件命名为file2.json,执行以下命令即可得到目标结构的JSON:
jq '.b = input' file1.json file2.json
命令说明
- jq会按顺序读取输入的文件,第一个读取的是
file1.json的内容 - 内置函数
input会读取下一个输入文件也就是file2.json的完整JSON对象 - 直接将读取到的对象赋值给第一个JSON的
.b字段,即可完成写入操作
如果需要将结果保存为新文件,可以追加输出重定向:
jq '.b = input' file1.json file2.json > result.json
如果需要直接覆盖更新第一个文件,推荐配合moreutils工具包中的sponge使用,避免文件被提前清空导致内容丢失:
jq '.b = input' file1.json file2.json | sponge file1.json
也可以使用--argfile参数提前读取第二个文件的内容存入变量再赋值,效果相同:
jq --argfile b_content file2.json '.b = $b_content' file1.json
内容的提问来源于stack exchange,提问作者user373201
相关产品推荐
相关产品推荐

