首页 > 解决方案 > 用 JQ 中另一个文件中的对象替换嵌套对象

问题描述

我有一个具有以下结构的 json 文件

{
  "a":"aval",
  "b":{},
  "c":"cval"
}

我有另一个包含以下内容的 json 文件

{
  "b1":"b1val","b2":"b2val"
}

我想将文件 2 中的 json 对象推入文件 1 中的“b”中

{
  "a":"aval",
  "b":{
      "b1":"b1val","b2":"b2val"
  },
  "c":"cval"
}

我如何用 JQ 做到这一点

标签: jsonjq

解决方案


假设文件 #2 可能不是空的,您可以简单地分配input.b.

jq '.b = input' file1 file2

在线演示

否则,您将使用以下内容来保留.b文件 #2 为空时的原始值。

jq -n 'input | .b = first(inputs, .b)' file1 file2

推荐阅读