jq:无法使用字符串索引数组

时间:2015-12-31 09:02:24

标签: json jq

我在文件中有以下内容(我称之为“myfile”):

[{
    "id": 123,
    "name": "John",
    "aux": [{
        "abc": "random",
        "def": "I want this"
    }],
    "blah": 23.11
}]

我可以在没有[]的情况下解析它,如下所示:

$ cat myfile | jq -r '.aux[] | .def'
I want this
$

但是我得到了[]

$ cat myfile | jq -r '.aux[] | .def'
jq: error: Cannot index array with string

如何使用jq处理[]? (我确定我可以使用不同的工具解析它们,但我想学习正确使用jq。

1 个答案:

答案 0 :(得分:51)

应该是:

jq '.[].aux[].def' file.json

.[]遍历外部数组.aux[],然后遍历每个节点的aux数组,.def打印其.def属性。

这将输出:

"I want this"

如果你想删除双引号-r--raw)到jq

jq -r '.[].aux[].def' file.json

输出:

I want this