在 jq 中使用条件格式 - PowerShell

在 jq 中使用条件格式 - PowerShell

这是来自的后续问题这个问题这是由另一个人贡献的。我有来自网络服务器的以下输出:

{
    "status":"OK",
    "result":{
        "string1":{
            "variable":0
        },
        "string2":[
            {
                "id":"XXXXX:XXXXX",
                "tier":"normal",
                "latitude":"01.XXXXX",
                "longitude":"02.XXXXX"
            },
            {
                "id":"XXXXX:XXXXX",
                "tier":"normal",
                "latitude":"01.XXXXX",
                "longitude":"02.XXXXX"
            },
            {
                "id":"XXXXX:XXXXX",
                "tier":"special",
                "latitude":"01.XXXXX",
                "longitude":"02.XXXXX"
            },
            {
                "id":"XXXXX:XXXXX",
                "tier":"normal",
                "latitude":"01.XXXXX",
                "longitude":"02.XXXXX"
            }
        ]
    }
}

jq -r '.result.string2[].id' responses.json我现在正在提取 ids并将它们作为responses.json文件保存;这工作得很好。

但是,我的问题是,如何设置条件,以便 jq 只向我输出id's if tier: "special"?我尝试用以下方法解决它回答在此线程中,为这两个别名:

jq -r '.result.string2[] | select(.tier == "special") | .id'responses.json

jq -r '.result.string2[] | select(.tier == "special") | .id' responses.json

这似乎在我的 Windows-PowerShell 中不起作用。它给我以下错误消息:

 jq: error: special/0 is not defined at <top-level>, line 1:
.result.string2[] | select(.tier == special) | .id jq: 1 compile error

谢谢回答!

答案1

您需要转义双引号,可能是因为 powershell 不像 POSIX shell 那样将它们保留在单引号内。

jq -r '.result.string2[] | select(.tier == \"special\") | .id'

相关内容