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

Installer avec les droits d'administration le paquet jq

apt install jq

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

  • utilisateurs/bcag2/json_query.1674817936.txt.gz
  • Dernière modification: Le 27/01/2023, 12:12
  • par bcag2