使用 jq 将 json 作为数组读入
Using jq to read in json as an array
我有这个例子test.json
文件:
{
"folder": {
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
}
我正在尝试将 'folder' 中包含的对象作为数组读取到变量 $var
中。所需的输出 - $var
包含以下内容:
[
{
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
]
看起来比较简单。 jq '.folder' test.json
读取文件夹值,然后使用 -s
标志通过管道输出以将其包含在数组中。此命令执行得很好:
jq '.folder' test.json | jq -s
但是,当我尝试将结果保存到变量时,它会抛出一个错误,显示 jq
用法语句。我错过了什么?有没有不同的方法来完成这个?
var=$(jq '.folder' test.json | jq -s)
echo $var
我还发现这在 zsh
中工作正常,但在 bash
中抛出错误。不确定这是否相关以及是否与 jq
的不同版本有关
这是您所期待的吗?
$ var="$(jq "[.folder]" test.json)"
$ echo "$var"
[
{
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
]
我有这个例子test.json
文件:
{
"folder": {
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
}
我正在尝试将 'folder' 中包含的对象作为数组读取到变量 $var
中。所需的输出 - $var
包含以下内容:
[
{
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
]
看起来比较简单。 jq '.folder' test.json
读取文件夹值,然后使用 -s
标志通过管道输出以将其包含在数组中。此命令执行得很好:
jq '.folder' test.json | jq -s
但是,当我尝试将结果保存到变量时,它会抛出一个错误,显示 jq
用法语句。我错过了什么?有没有不同的方法来完成这个?
var=$(jq '.folder' test.json | jq -s)
echo $var
我还发现这在 zsh
中工作正常,但在 bash
中抛出错误。不确定这是否相关以及是否与 jq
这是您所期待的吗?
$ var="$(jq "[.folder]" test.json)"
$ echo "$var"
[
{
"name": "Desktop",
"path": "Users/user/Desktop",
"executable": false
}
]