jq filtering curl- 'No se puede indexar el número con una cadena'

jq filtering curl- 'No se puede indexar el número con una cadena'

Estoy intentando filtrar una solicitud curl con jq para obtener campos específicos y ponerlos en variables. Inicialmente, estaba usando una solicitud curl básica como esta:

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

Proporciono mi nombre de usuario y contraseña, y obtengo un recuento de cuántas veces está presente el término 'PRUEBA', que se devuelve en formato json bonito. Esta respuesta se coloca en una variable llamada myResponse.

Utilicé jq para filtrar esto y obtener un valor de recuento específico del json:

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

Esto funcionó y me proporcionó un número.

Entonces ahora quería experimentar un poco. Además de obtener la respuesta de la solicitud curl, también quería recuperar el código de respuesta (200, 404, etc.). Así que adapté mi solicitud curl a lo siguiente:

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

Esto devolvió con éxito la respuesta JSON y luego devolvió el código de respuesta http como un número.

Sin embargo, una vez que esto se pasa a jq, aparece el siguiente error:

jq: error: Cannot index number with string

¿Cómo soluciono este error? Cuando era solo json, jq lo manejó bien, pero tan pronto como se agregó este código de respuesta al final, no puede analizarlo.

Gracias

Respuesta1

Había tanto JSON como HTTP en la variable que estaba canalizando a jq. Primero debes dividir la variable en JSON y HTTP usando taily head. Una vez que introduje JSON puro en jq, funcionó.

información relacionada