如何在JQ 1.4中一起使用管道(|)和逗号(,)?

时间:2015-04-20 10:46:43

标签: json jq

我在Windows 64位计算机上使用JQ 1.4。

以下是内容输入文件(JSON.txt

    {
        "name": "Google",
        "location":
                {
                        "street": "1600 Amphitheatre Parkway",
                        "city": "Mountain View",
                        "state": "California",
                        "country": "US"
                },
        "employees":
                [
                        {
                                "name": "Michael",
                                "division": "Engineering"
                        },
                        {
                                "name": "Laura",
                                "division": "HR"
                        },
                        {
                                "name": "Elise",
                                "division": "Marketing"
                        }
                ]
}

在输出中,我会看到两个结果"Google""Laura" 我可以用个人过滤器来获取它们。

1) jq ."name" JSON.txt
"Google"

2) jq ."employees|map(select(.division==\"HR\"))"[0].name JSON.txt
"Laura"

当我使用逗号,合并这两个过滤器时,收到以下错误:

3) jq ."name",."employees|map(select(.division==\"HR\"))"[0].name JSON.txt
jq: error: Cannot iterate over string
null
"Laura"

有人可以帮助我得到以下结果:

"Google"
"Laura"

1 个答案:

答案 0 :(得分:2)

在表达式的第二部分周围使用括号,并使用简写键过滤器语法,如:

jq ".name, (.employees|map(select(.division==\"HR\"))[0].name)" JSON.txt