jq - не удается извлечь ключевые значения из безопасного ответа Google json

Итак, я прочитал jq учебник и играл с github json ответы оттуда и извлекли некоторые значения некоторых других ключей, так что я думаю, что я понимаю, как работает синтаксис. К сожалению, ничего не работает при попытке использовать его в Google safe-browsingjson ответ. Вот полный ответ, сохраненный в переменной (сделал то же самое для примеров 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"

Заранее спасибо.

1 ответ

Решение

.matches.threatType

.matches это массив, так что вам придется использовать [] расширить его, например:

.matches[].threatType

.threatType

Эта попытка может быть спасена с помощью ..например,

.. | .threatType? // empty

.[] | .threatType

Без комментариев:-)

. [] | {type:.threatType}

Вы, вероятно, имели в виду:

.matches[] | {type: .threatType}

п.с.

Вы можете использовать debug чтобы помочь отладить / понять, что происходит.

Кроме того, в будущем, пожалуйста, не забудьте описать или показать ожидаемый результат.

Другие вопросы по тегам