我正在使用jq,但在我的json标签中使用" - "使jq无法编译.我无法逃避它使其成功.这里是命令
curl -X GET -H "X-AppKey:foo" "foo/v2/_status" | jq '.component-status[]'
Run Code Online (Sandbox Code Playgroud)
我在jq的github上阅读了这篇文章https://github.com/stedolan/jq/issues/202,但我无法使其有效.
这是卷曲的输出
{
"status": "ok",
"hostname": "0b0b495a46db",
"component-status": [
{
"status-code": 200,
"component": "Service1",
"status": "OK"
},
{
"status-code": 200,
"component": "Service2",
"status": "OK"
}
]
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
fed*_*qui 10
您需要用括号和双引号括起来:
jq '.["component-status"]'
Run Code Online (Sandbox Code Playgroud)
根据您的给定输入,它返回:
[
{
"status": "OK",
"component": "Service1",
"status-code": 200
},
{
"status": "OK",
"component": "Service2",
"status-code": 200
}
]
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud).foo, .foo.bar
最简单有用的过滤器是
.foo
.当给定JSON对象(也称为字典或散列)作为输入时,它会在键"foo"处生成值,如果不存在则生成null.如果键包含特殊字符,则需要用双引号将其括起来,如下所示:
."foo$"
.
从github问题如果字段名称有破折号,则无法选择字段:
目前,它被解析为减法.当密钥不符合标识符语法时,您始终可以显式使用字符串.
rjurney 或他的答案的评论者建议的选项对我不起作用(可能是因为我使用了 PowerShell),但是在github 问题的答案中,有一个解决方案,它做到了这一点 - 用 \ 转义双引号
jq '.\"component-status\"'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2742 次 |
最近记录: |