使用jq和命令行参数从JSON对象获取字段
假设以下JSON文件使用jq和命令行参数从JSON对象获取字段,json,bash,jq,Json,Bash,Jq,假设以下JSON文件 { "foo": "hello", "bar": "world" } 我想从独立对象中的JSON对象获取foo字段,我这样做: <file jq '{foo}' { "foo": "hello" } 不幸的是,这并没有给出预期的结果{“foo”:“hello”}。 知道为什么变量的名称会进入对象吗 解决方法是显式定义对象: &
{
"foo": "hello",
"bar": "world"
}
我想从独立对象中的JSON对象获取foo
字段,我这样做:
<file jq '{foo}'
{
"foo": "hello"
}
不幸的是,这并没有给出预期的结果{“foo”:“hello”}
。
知道为什么变量的名称会进入对象吗
解决方法是显式定义对象:
<file jq '{($myarg):.[$myarg]}'
简而言之,不可以。快捷语法只能在非常特殊的条件下使用。例如,它不能与jq键名称一起使用
选择
Q中描述的方法是首选方法,但对于记录,这里有两种备选方法:
jq --arg myarg "foo" '
.[$myarg] as $v | {} | .[$myarg] = $v'
当然,还有另外一种选择,还有许多警告:
myarg=foo ; jq "{ $myarg }"
keys
不是jq关键字<代码>如果
是其中之一。请参阅更新。
myarg=foo ; jq "{ $myarg }"