所以我阅读了jq
教程并从那里使用了github
json
响应,并提取了一些其他键的值,所以我想我理解语法是如何工作的。不幸的是,尝试在 Google safe-browsing
json
响应中使用它时没有任何效果。以下是存储在变量中的完整响应(对本教程中的 github 示例执行jq
相同(:
echo "$safeb"
{
"matches": [
{
"threatType": "MALWARE",
"platformType": "ALL_PLATFORMS",
"threat": {
"url": "http://www.wittyvideos.com"
},
"cacheDuration": "300s",
"threatEntryType": "URL"
}
]
}
。这就是我尝试过的:
echo "$safeb" | jq '.matches.threatType'
jq: error (at <stdin>:13): Cannot index array with string "threatType"
echo "$safeb" | jq '.threatType'
null
echo "$safeb" | jq '.[] | .threatType'
jq: error (at <stdin>:13): Cannot index array with string "threatType"
echo "$safeb" | jq '.[] | {type: .threatType}'
jq: error (at <stdin>:13): Cannot index array with string "threatType"
提前谢谢。
.matches.threatType
.matches
是一个数组,所以你必须使用[]
来扩展它,例如:
.matches[].threatType
.威胁类型
这种尝试可以使用..
来挽救,例如
.. | .threatType? // empty
.[] | .威胁类型
没有评论:-(
.[] |{类型: .威胁类型}
你可能的意思是:
.matches[] | {type: .threatType}
附言
你可能希望使用debug
来帮助调试/了解正在发生的情况。
另外,将来,请不要忘记描述或显示预期的输出。