curl http://testhost.test.com:8080/application/app/version | jq '.version' | jq '.[]'
El comando anterior solo muestra los valores a continuación:
"[email protected]"
"2323"
"test"
"02-03-2014-13:41"
"application"
¿Cómo puedo obtener los nombres de las teclas como las siguientes?
email
versionID
context
date
versionName
jq
?Respuestas:
Puedes usar:
ACTUALIZACIÓN: Para crear una matriz BASH usando estas teclas:
Usando BASH 4+:
En BASH más antiguo puedes hacer:
Luego imprímalo:
fuente
mapfile -t arr < <(jq -r 'keys[]' ms.json)
lugar de esa sustitución de proceso feo para evitar tener problemas con los espacios en las teclas.arr=(); while IFS='' read -r line; do arr+=("$line"); done < <(...)
también lo hará.keys_unsorted
para obtener las claves en orden de documentos.Necesitas usar
jq 'keys[]'
. Por ejemplo:Producirá una lista separada por líneas:
fuente
En combinación con la respuesta anterior, desea solicitar a jq la salida sin formato, por lo que su último filtro debería ser, por ejemplo:
De jq help:
fuente
bash
guión complicado : si no especificas-r
, obtienes una cadena entre comillas, que se ve bien en la pantalla, pero generalmente no quieres que las comillas estén incrustadas en la cadena.Para imprimir claves en una línea como csv:
Salida:
Para completar CSV ... para imprimir valores en una línea como CSV:
Salida:
fuente
echo '{"ab": 1, "cd": 2}' | jq -r 'keys[]'
imprime todas las teclas una tecla por línea sin comillas.fuente
Para obtener las claves en un nodo más profundo en un JSON:
fuente
Aquí hay otra forma de obtener una matriz Bash con el ejemplo JSON dado por @anubhava en su respuesta:
fuente