Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
utilisateurs:bcag2:json_query [Le 27/01/2023, 15:02]
bcag2 supprimée
— (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]]//​