嗨,我想访问json数组中的给定元素,如下所示:
$ echo '[ { "CT" : "OS1" , "VERSION" : "3" } , { "CT" : "OS2" , "VERSION" : "3" } ]' | jq '.[1]'
{
"CT": "OS2",
"VERSION": "3"
}
但是我想使用变量(将来从环境中使用)替换上面命令中的索引“ 1”,但这会产生错误。
echo '[ { "CT" : "OS1" , "VERSION" : "3" } , { "CT" : "OS2" , "VERSION" : "3" } ]' | jq --arg index 1 '.[$index]'
jq: error (at <stdin>:1): Cannot index array with string "1"
看起来像这样解析后就无法将1解析为数值。有人可以帮助我吗?
答案 0 :(得分:5)
您可以使用--argjson
选项:
jq --argjson index 1 '.[$index]'
如jq --help
中所述:
--argjson a v
将变量$a
设置为JSON value<v>
;
答案 1 :(得分:1)
如果您使用的是jq 1.4或更高版本,则可以使用tonumber
函数:
jq --arg index 1 '.[$index | tonumber]'
有关最新版本,请参见oliv's answer。