curl http://testhost.test.com:8080/application/app/version | jq '.version' | jq '.[]'
La commande ci-dessus génère uniquement les valeurs ci-dessous:
"[email protected]"
"2323"
"test"
"02-03-2014-13:41"
"application"
Comment puis-je obtenir les noms de clé à la place comme ci-dessous:
email
versionID
context
date
versionName
jq
?Réponses:
Vous pouvez utiliser:
MISE À JOUR: Pour créer un tableau BASH à l'aide de ces clés:
Utilisation de BASH 4+:
Sur les anciens BASH, vous pouvez faire:
Puis imprimez-le:
la source
mapfile -t arr < <(jq -r 'keys[]' ms.json)
place de cette vilaine substitution de processus pour éviter d'avoir des problèmes avec les espaces dans les clés.arr=(); while IFS='' read -r line; do arr+=("$line"); done < <(...)
fera également l'affaire.keys_unsorted
pour obtenir les clés dans l'ordre des documents.Vous devez utiliser
jq 'keys[]'
. Par exemple:Affiche une liste séparée par ligne:
la source
En combinaison avec la réponse ci-dessus, vous voulez demander à jq une sortie brute, votre dernier filtre devrait donc être par exemple:
De l'aide de jq:
la source
bash
script difficile à saisir - si vous ne spécifiez pas,-r
vous obtenez une chaîne entre guillemets, qui a l'air bien à l'écran, mais vous ne voulez généralement pas que les guillemets soient incorporés dans la chaîne.Pour imprimer des clés sur une seule ligne en tant que csv:
Production:
Pour l'exhaustivité de csv ... pour imprimer les valeurs sur une ligne en tant que csv:
Production:
la source
echo '{"ab": 1, "cd": 2}' | jq -r 'keys[]'
imprime toutes les clés une clé par ligne sans guillemets.la source
Pour obtenir les clés sur un nœud plus profond dans un JSON:
la source
Voici une autre façon d'obtenir un tableau Bash avec l'exemple JSON donné par @anubhava dans sa réponse:
la source