如何使用jq修改嵌套对象

15

鉴于此

{
  "some": "property",
  "nested": {
    "hello": "world"
  }
}

我想用jq获得这个结果

{
  "some": "property",
  "nested": {
    "hello": "world",
    "freshly": "added"
  }
}

那么我该如何添加新添加的字段呢?我不知道有多少属性在根级别(而且我想保留它们全部),我只知道嵌套对象的名称(这里是“nested”),我想添加的属性的名称(这里是“freshly”)和它的值。

3个回答

24

只需将新值分配给嵌套对象即可。

.nested.freshly = "added"

7

我自己找到了如何做。如果您有更好的解决方案,欢迎在此提供。

jq '.nested=(.nested + {"freshly": "added"})'

虽然Jeff的回答更加直接,但当包含键的映射以其他方式生成时,这也非常有用。话虽如此,我会将其写成.nested += {"freshly": "added"} - user3899165

2
您可以简单地做以下操作:
.nested += {freshly: "added"}

然后,您可以一次添加多个嵌套键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接