首页 > 解决方案 > 使用 jq 将 json 作为数组读取

问题描述

我有这个示例test.json文件:

{
    "folder": {
    "name": "Desktop",
    "path": "Users/user/Desktop",
    "executable": false
    }
}

我正在尝试将“文件夹”中包含的对象$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

标签: bashzshjq

解决方案


这是你所期待的吗?

$ var="$(jq "[.folder]" test.json)"
$ echo "$var"
[
  {
    "name": "Desktop",
    "path": "Users/user/Desktop",
    "executable": false
  }
]

推荐阅读