jq filtering curl- «Невозможно индексировать число со строкой»

jq filtering curl- «Невозможно индексировать число со строкой»

Я пытаюсь отфильтровать запрос curl с помощью jq, чтобы получить определенные поля и поместить их в переменные. Изначально я использовал базовый запрос curl, такой как этот:

myResponse=$(curl -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=TEST")

Я предоставляю свое имя пользователя и пароль и получаю подсчет того, сколько раз присутствует термин 'TEST', который возвращается в виде симпатичного json. Этот ответ помещается в переменную с именем myResponse.

Я использовал jq для фильтрации этого значения, чтобы получить определенное значение количества из json:

count=`echo $myResponse | jq -r '.count'`

Это сработало и дало мне номер.

Итак, теперь я хотел немного поэкспериментировать. Помимо получения ответа от запроса curl, я также хотел получить код ответа (200, 404 и т. д.). Поэтому я адаптировал свой запрос curl следующим образом:

myResponse=$(curl --write-out %{http_code} --silent -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=DEBUG")

Это успешно вернуло как ответ JSON, так и код ответа http в виде числа.

Однако, как только это передается в jq, я получаю следующую ошибку:

jq: error: Cannot index number with string

Как устранить эту ошибку? Когда это был просто json, jq справлялся с этим нормально, но как только этот responsecode был добавлен в конец, он не может его разобрать.

Спасибо

решение1

В переменной, которую я передавал в jq, были и JSON, и HTTP. Сначала нужно разделить переменную на JSON и HTTP с помощью tailи head. Как только я передал чистый JSON в jq, все заработало.

Связанный контент