jq在顶级密钥中转义连字符时遇到问题

时间:2018-11-29 06:49:03

标签: json key jq

这是我要通过jq解析的json:

{
    "aaa-bbb-ccc": {
        "derp": blah
    }
}

遇到此错误:

cat myjson | jq -r .'aaa-bbb-ccc' 

jq: error: aaa/0 is not defined at <top-level>, line 1:
.aaa-bbb-ccc    
jq: error: bbb/0 is not defined at <top-level>, line 1:
.aaa-bbb-ccc           
jq: error: ccc/0 is not defined at <top-level>, line 1:

1 个答案:

答案 0 :(得分:0)

使用访问键值的基本形式,您应该编写:

jq -r '.["KEYNAME"]'

除了在Windows提示符下,您必须摆弄引号(或将过滤器放在文件中)。

在现代版本的jq中,基本形式可以缩写为."KEYNAME"

因此,假设您的jq为1.5或更高,则可以编写(避免使用cat):

jq -r '."aaa-bbb-ccc"' myjson 

有关更多详细信息,请参见jq FAQ