是否可以使用 bash 属性访问 json 数组?
JSON 示例:
{
"data": [
{
"id": 1,
"name": "John"
},
{
"id": 2,
"name": "Doe"
},
...
}
Bash 示例,如下所示:
count=0
id=$(cat example.json | jq -r '.data[$count].id')
答案1
只需使用将变量视为已存在的--argjson
选项$cnt
JSON- 编码值:
$ cnt=0
$ jq --argjson cnt "$cnt" '.data[$cnt]' file.json
输出:
{
"id": 1,
"name": "John"
}
--argjson name JSON-text
:此选项将 JSON 编码的值作为预定义变量传递给 jq 程序。如果您使用 运行 jq
--argjson foo 123
,那么$foo
在程序中可用并且具有值123
答案2
使用双引号而不是 single 来允许变量插值:
jq -r ".data[$count].id" example.json