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édentesRévision précédente
Prochaine révision
Révision précédente
json_query [Le 04/08/2023, 16:17] – changement de la section Utilisation qui n'utilisait que la commande Curl Amiralgabyjson_query [Le 05/01/2025, 23:10] (Version actuelle) – correction et syntaxe d'option Amiralgaby
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]]//