Traitement json
dans le terminal avec jq
jq
est construit autour du concept de filtres qui travaillent sur un flux de json
. Chaque filtre prend une entrée et émet du json
en sortie standard. Comme nous allons le voir, il existe de nombreux filtres prédéfinis que nous pouvons utiliser. Et nous pouvons combiner ces filtres sans effort en utilisant des tuyaux pour construire et appliquer rapidement des opérations et des transformations complexes à nos données json
.
Installation
sudo apt install jq
Usages
Prettify json
output
Dans cet exemple nous avons un tableau contenant un string (status
) et une collection (posts
).
curl https://mediashare.fr/api/posts | jq
{
"status": "success",
"posts": [
{
"id": "61a85e2b216f1",
"title": "Symfony 6.0 - features",
"slug": "symfony-6-0-features",
"createDate": "2021-12-02T06:48:27+01:00",
"updateDate": "2021-12-03T18:21:55+01:00",
"views": 31,
"comments": 0,
"author": {
"id": "609cd61be40a6",
"username": "MarquandT",
"signature": "Ethical Hacker ~ Web Developper ~ File Hosting Provider ~ Crypto Enthusiast ~ Automation Expert\r\nBitcoin donation: 32Uu4NKGnxSPC7UukYXVyRHwbppbQpKVki"
}
},
...
Récupérer une valeur
Pour accèder à une valeur nous devons pointer la clef avec .
puis le nom de la clef .status
, par exemple si nous souhaitons connaitre la valeur de status
.
curl https://mediashare.fr/api/posts | jq '.status'
Naviguer dans un tableau
Utiliser l'index
Nous pouvons récupérer la valeur d'un ou plusieurs tableaux en fonction de son/leurs index.
curl https://mediashare.fr/api/posts | jq '.posts[0]'
curl https://mediashare.fr/api/posts | jq '.posts[1,2]'
curl https://mediashare.fr/api/posts | jq '.posts[0:10]'
Récupérer la valeur d'un élément
curl https://mediashare.fr/api/posts | jq '.posts[].id'
curl https://mediashare.fr/api/posts | jq '.posts[].author'
curl https://mediashare.fr/api/posts | jq '.posts[].author.username'
Créer un objet
à partir d'un array
À partir du tableau posts
nous allons créer des objets
contenant l'id
, title
et les views
de chaques articles avec l'opérateur |
.
curl https://mediashare.fr/api/posts | jq '.posts[]|{"id": .id, "title": .title, "views": .views}'
{
"id": "61a85e2b216f1",
"title": "Symfony 6.0 - features",
"views": 32
}
...
Si nous le souhaitons, nous pouvons ensuite classer les résultats par le nombre de vues (views
) par article.
curl https://mediashare.fr/api/posts | jq '[.posts[]|{"id": .id, "title": .title, "views": .views}] | sort_by(.views)'

MarquandT
Ethical Hacker ~ Web Developper ~ File Hosting Provider ~ Crypto Enthusiast ~ Automation Expert Bitcoin donation: 32Uu4NKGnxSPC7UukYXVyRHwbppbQpKVki