Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:bcag2:json_query [Le 27/01/2023, 12:12] bcag2 [Utilisation] avec elasticsearch |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>console}} | ||
- | ---- | ||
- | |||
- | ====== JSON Query (jq) ====== | ||
- | |||
- | Cette commande est utilisée en [[:tutoriel/console_ligne_de_commande|ligne de commande]] pour mettre en forme du code [[wpfr>JavaScript_Object_Notation|JSON]] et n'afficher qu'une partie des enregistrements et/ou attributs | ||
- | |||
- | ===== Installation ===== | ||
- | |||
- | Installer avec les [[:sudo|droits d'administration]] le paquet jq | ||
- | <code bash> | ||
- | apt install jq | ||
- | </code> | ||
- | |||
- | ===== Utilisation ===== | ||
- | On peut l'utiliser simplement : | ||
- | <code bash> | ||
- | curl service:<port>/<table_ou_vue> | jq | ||
- | </code> | ||
- | |||
- | 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) : | ||
- | <code bash> | ||
- | curl service:<port>/<table_ou_vue> | jq '.[] | .mon_attribut' | ||
- | </code> | ||
- | |||
- | 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 : | ||
- | <code bash> | ||
- | curl service:<port>/<table_ou_vue> | jq '.[3:5]' | ||
- | </code> | ||
- | |||
- | ou des deux derniers : | ||
- | <code bash> | ||
- | curl service:<port>/<table_ou_vue> | jq '.[-2:]' | ||
- | </code> | ||
- | |||
- | Exemple pour extraire, à partir de l'[[https://adresse.data.gouv.fr/api-doc/adresse|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) | ||
- | <code bash> | ||
- | curl "https://api-adresse.data.gouv.fr/search/?q=professeur&postcode=69007&limit=3" | jq '.features[0].properties.name' | ||
- | # retourne : | ||
- | "Rue Professeur Grignard" | ||
- | </code> | ||
- | |||
- | Autre exemple avec [[:elasticsearch]] en reprenant l'exemple autour des //movies// : | ||
- | <code bash> | ||
- | curl "localhost:9200/_search" -X GET -H "Content-Type: application/json" -d '{"query":{"match_all": {}}}' \ | ||
- | | jq '.hits.hits[] | ._source.movies.title' | ||
- | </code> | ||
- | |||
- | Source : [[https://dev-tips.com/tools/using-jq-to-filter-json-output]] | ||
- | |||
- | ---- | ||
- | |||
- | //Contributeur : [[:utilisateurs/bcag2]]// |