如何使用 jq 将父元素插入到我的 json 中?

lep*_*eil 2 json jq

我想用 jq 在 json 上插入新的根元素,我的目标是通过在根一级之前添加一级来操作 json 层次结构:

json 示例:

{
 "option1":true
}
Run Code Online (Sandbox Code Playgroud)

我想获得:

{
 "root":
 {
  "option1":true
 }
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

$ echo '{"option1":true}' | jq -r '. + {"root"}'

它将元素插入到第一级,而不是之前:

{
 "root":null
 "option1":true
}
Run Code Online (Sandbox Code Playgroud)

有可能吗?

Cha*_*ffy 6

.其放在您想要输入数据的位置。root在这种情况下,这就是以字符串为键的值。

jq '{"root": .}' <<<'{"option1": true}'
Run Code Online (Sandbox Code Playgroud)

...正确发出:

jq '{"root": .}' <<<'{"option1": true}'
Run Code Online (Sandbox Code Playgroud)