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 | ||
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]]// |