我正在使用jq,正在尝试将新的JSON对象添加到现有文件的新密钥中。
我有以下JSON文件foobarbaz.json:
{
"example":{
"name": "stackOverflowQuestion"
}
}
我想在示例下添加一个新条目,以便在foobar.json中获得以下输出
{
"example": {
"name": "stackOverflowQuestion",
"new": {
"newfield": {
"key": "value"
}
}
}
}
我在终端中使用以下命令:
$ tempvar='{"newfield":{"key":"value"}}'
$ cat foobarbaz.json | jq '.example.new=env.tempvar' > foobar.json
但是,foobar.json中的输出有些出乎意料:
{
"example": {
"name": "stackOverflowQuestion",
"new": "{\"newfield\":{\"key\":\"value\"}}"
}
}
为什么jq用大括号将大括号括起来,为什么会转义双引号呢?
通过fromjson
将其解码为JSON内容,用于将您的字符串(所有环境变量都在其中的格式!)转换为相应的数据结构。
tempvar='{"newfield":{"key":"value"}}' jq '.example.new=(env.tempvar | fromjson)' <<'EOF'
{
"example":{
"name": "stackOverflowQuestion"
}
}
EOF
...作为输出发出:
{
"example": {
"name": "stackOverflowQuestion",
"new": {
"newfield": {
"key": "value"
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句