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
Prochaine révision
Révision précédente
json_query [Le 04/08/2023, 16:17]
Amiralgaby changement de la section Utilisation qui n'utilisait que la commande Curl
json_query [Le 05/01/2025, 23:10] (Version actuelle)
Amiralgaby correction et syntaxe d'option
Ligne 24: Ligne 24:
   curl https://​jsonplaceholder.typicode.com/​users?​_limit=2 | jq # curl va rendre du JSON que JQ va manipuler   curl https://​jsonplaceholder.typicode.com/​users?​_limit=2 | jq # curl va rendre du JSON que JQ va manipuler
  
-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) :+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 bas) :
 <code bash> <code bash>
 jq '.[] | .mon_attribut'​ fichier.json jq '.[] | .mon_attribut'​ fichier.json
Ligne 39: Ligne 39:
 </​code>​ </​code>​
  
 +si le résultat attendu ne comporte plus qu’une chaîne de caractère, l’option //​%%--%%raw-output//​ (ou //-r//) permet de supprimer les guillemets autour :
 +<code bash>​curl https://​jsonplaceholder.typicode.com/​users?​_limit=1 | jq -r '.[] | "​\(.name)"'</​code>​
 +ce qui peut-être utile si on récupère cette chaîne dans la variable d’un script bash
 +<code bash>
 +#!/bin/bash
 +nom_depuis_api=$(curl https://​jsonplaceholder.typicode.com/​users?​_limit=1 | jq -r '.[] | "​\(.name)"'​)
 +</​code>​
 ===== Exemples ===== ===== Exemples =====
 Les tests utilisent l'​outil en ligne de commande [[:curl]] pour récupérer une réponse HTTP contenant du JSON à manipuler par **JQ**. Les tests utilisent l'​outil en ligne de commande [[:curl]] pour récupérer une réponse HTTP contenant du JSON à manipuler par **JQ**.
  
 ==== avec le serveur de test JSONPlaceholder ==== ==== avec le serveur de test JSONPlaceholder ====
-Pour réaliser des tests, si vous ne disposer pas de serveur REST, vous pouvez utiliser le serveur [[https://​jsonplaceholder.typicode.com|JSONPlaceholder]] qui propose de fausses ​données ​juste pour test,\\+Pour réaliser des tests, si vous ne disposer pas de serveur REST, vous pouvez utiliser le serveur [[https://​jsonplaceholder.typicode.com|JSONPlaceholder]] qui renvoi des données ​"​placeholder"​.\\
 ci-dessous récupération de 2 utilisateur (remarquer l'​option //​_limit=2//​ pour limiter le nombre de retour) : ci-dessous récupération de 2 utilisateur (remarquer l'​option //​_limit=2//​ pour limiter le nombre de retour) :
 <code bash> <code bash>
Ligne 67: Ligne 74:
  | jq '​.hits.hits[] | ._source.movies.title'​  | jq '​.hits.hits[] | ._source.movies.title'​
 </​code>​ </​code>​
 +
 +==== avec gitlab ====
 +Récupération d'​informations sur les tickets d'un projet Gitlab :
 +<code bash>​curl --header "​PRIVATE-TOKEN:​012-abc-345-def"​ "​https://​gitlab.com/​api/​v4/​projects/​380/​issues?​page=1"​ | jq '.[] | "​\(.iid):​\(.state):​\(.title):​\(.labels)"'</​code>​
 +Il faut au préalable définir le token d'​accès à l'API dans le projet à mettre à la place de //​012-abc-345-def//​\\
 +récupérer le n° du projet (380 dans l'​exemple ci-dessus)
 +
  
 Source : [[https://​dev-tips.com/​tools/​using-jq-to-filter-json-output]] Source : [[https://​dev-tips.com/​tools/​using-jq-to-filter-json-output]]
Ligne 72: Ligne 86:
 ===== Voir aussi ===== ===== Voir aussi =====
   * (en) [[https://​github.com/​dominictarr/​JSON.sh|parser JSON.sh]] pour "​aplatir"​ une sortie JSON   * (en) [[https://​github.com/​dominictarr/​JSON.sh|parser JSON.sh]] pour "​aplatir"​ une sortie JSON
 +  * (en) [[https://​dev-tips.com/​tools/​using-jq-to-filter-json-output]]
  
 ---- ----
  
 //​Contributeur :​ [[:​utilisateurs/​bcag2]],​ [[:​utilisateurs/​Amiralgaby]]//​ //​Contributeur :​ [[:​utilisateurs/​bcag2]],​ [[:​utilisateurs/​Amiralgaby]]//​
  • json_query.1691158636.txt.gz
  • Dernière modification: Le 04/08/2023, 16:17
  • par Amiralgaby