如何在jq中分配json对象



我尝试了jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = $value" <<< "$json"

$json 的值

{
"x":{
"foo": "hello"
},
"y":{
"foo": "world"
}
}

我得到的只是jq: 1 compile error

我期望:

{
"x":{
"foo": "bar",
"bar": "foo"
},
"y":{
"foo": "world"
}
}

我试着在$value周围添加引号,但它抱怨bash引用问题,我相信它试图将整个json对象保存为字符串

当在shell中的双引号字符串中使用时,必须转义美元。否则,shell将对其进行解释并将语句扩展为:

jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = " <<< "$json"
empty since not set in the shell  ^^^

我建议用单引号包装jq命令:

jq --argjson value '{"foo": "bar", "bar": "foo"}' '.x = $value' <<< "$json"

相关内容

  • 没有找到相关文章