jq - 无法从 google 安全浏览 json 响应中提取关键值

jq - can't extract key values from google safebrowsing json response

所以我已经阅读了 jq 教程并使用了那里的 github json 响应并提取了一些其他键的一些值所以 我认为我了解语法的工作原理。不幸的是,尝试在 Google safe-browsing json 响应中使用它时没有任何效果。这是存储在变量中的完整响应(对 jq 教程中的 github 示例也是如此):

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

可以使用 .. 挽救此尝试,例如

.. | .threatType? // empty

.[] | .threatType

无评论:-)

.[] | {type: .threatType}

你的意思可能是:

.matches[] | {type: .threatType}

p.s.

您可能想使用 debug 来帮助 debug/understand 发生什么事。

此外,以后请不要忘记描述或显示预期的输出。