Ceci est une ancienne révision du document !
JSON Query (jq)
Cette commande est utilisée en ligne de commande pour mettre en forme du code JSON et n'afficher qu'une partie des enregistrements et/ou attributs
Installation
Installer avec les droits d'administration le paquet jq
apt install jq
Utilisation
On peut l'utiliser simplement :
curl service:<port>/<table_ou_vue> | jq
On peut aussi ne récupérer qu'un attribut (dans le cas où seule une liste sans clé supérieure est retournée, sinon reportez-vous à l'exemple concret plus pas) :
curl service:<port>/<table_ou_vue> | jq '.[] | .mon_attribut'
Et on peut ne prendre que certains enregistrements, par exemple, si vous avez 10 enregistrements, pour voir les données que du 3ème et 4ème :
curl service:<port>/<table_ou_vue> | jq '.[3:5]'
ou des deux derniers :
curl service:<port>/<table_ou_vue> | jq '.[-2:]'
Exemple pour extraire, à partir de l'API REST d'Etalab, le nom d'une rue lyonnaise à partir de la chaîne professeur (et du code postal 69007), et ne récupérer que le premier retour (au cas où il y en aurait plusieurs)
curl "https://api-adresse.data.gouv.fr/search/?q=professeur&postcode=69007&limit=3" | jq '.features[0].properties.name' # retourne : "Rue Professeur Grignard"
Autre exemple avec elasticsearch en reprenant l'exemple autour des movies :
curl "localhost:9200/_search" -X GET -H "Content-Type: application/json" -d '{"query":{"match_all": {}}}' \ | jq '.hits.hits[] | ._source.movies.title'
Source : https://dev-tips.com/tools/using-jq-to-filter-json-output
Contributeur : bcag2