28/01/2026

jq-quest – Apprenez à maîtriser jq sans vous prendre la tête

Par admin

jq-quest - Apprenez à maîtriser jq sans vous prendre la tête

Si vous avez déjà
croisé la route de jq
, c’est probablement parce que vous vous la touchez un peu dans le terminal et que vous avez déjà joué avec du format JSON (logs, APIs, config…).

Jq, tout le monde l’adore parce que ça filtre, ça mappe et surtout ça transforme du JSON directement depuis le terminal. Mais la syntaxe de ce truc, aïe aïe aïe, c’est comme faire de la Regex. C’est de l’apprentissage sur le tas surtout. Faut copier coller des trucs en provenance de RIP-StackOverflow ou de ChatGPT-le-sang-de-la-veine. Et le pire c’est que 2 jours après, on a tout oublié !!! Puis lire la doc officielle, m’en parlez pas, c’est comme lire autre chose que mon site… c’est pas le criss de fun ^^.

Heureusement, pour ceux qui veulent vraiment monter en compétence sans s’endormir, il existe
jq-quest
.

C’est un petit projet sympa hébergé sur Codeberg qui propose une approche "learning by doing" (apprendre en faisant, pour les anglophobes). Au début, je pensais que c’était juste un QCM basique, mais en fait non puisqu’il faut vraiment taper les commandes et se salir les mains.

Pour essayer, suffit de cloner le dépôt, vous lancez le script, et on vous donne un input JSON et l’output attendu. À vous ensuite de trouver la bonne commande jq pour passer de l’un à l’autre.

Il vous faudra juste jq d’installé sur votre machine. Attention par contre, si vous êtes sous Windows, il faudra passer par WSL ou Git Bash, parce que le script .sh ne va pas aimer PowerShell.

Ça s’installe donc en deux secondes comme ceci :

git clone https://codeberg.org/gturri/jq-quest.git
cd jq-quest

Ensuite, vous lancez votre premier exercice :

./jq-quest.sh 1-pretty-print.json

Le script va alors vous afficher l’instruction, le JSON d’entrée et ce qu’il attend en sortie :

INSTRUCTION: Pretty print the json
INPUT: {"k1": "v1", "k2":[1, 3, 7]}
EXPECTED OUTPUT: {
 "k1": "v1",
 "k2": [
 1,
 3,
 7
 ]
}

Vous tapez votre proposition de filtre, et il vous dit si c’est bon ou pas. Pour proposer une solution, suffit de taper :

./jq-quest.sh 1-pretty-print.json 'SOLUTION'

Si vous séchez (et croyez-moi, ça va arriver), vous pouvez demander un indice avec :

./jq-quest.sh 1-pretty-print.json hint

Ou carrément la solution si vous êtes au bout du rouleau :

./jq-quest.sh 1-pretty-print.json solution

Mais rassurez vous, les exercices sont progressifs, ça commence par du "pretty print" basique (le truc qu’on fait tous), puis on attaque les filtres simples, les clés spéciales, les tableaux, et petit à petit on arrive sur des trucs bien plus costauds comme les itérations sur objets, le slicing ou les opérations mathématiques.

Ce genre de tuto interactif c’est top parce que jq, c’est hyper puissant, mais la courbe d’apprentissage est un peu raide au début. Là, en une petite heure, vous pouvez plier les exercices et avoir enfin compris la logique du truc au lieu de tâtonner à chaque fois.

D’ailleurs, si vous aimez ce genre d’outils pour parser de la donnée, je vous rappelle qu’il existe aussi
fq pour les fichiers binaires
ou encore
htmlq pour le HTML
. J’aurais pu vous parler d’outils graphiques pour faire ça, mais franchement, rien ne vaut la ligne de commande pour comprendre ce qu’on fait. Et si vous êtes plutôt Python, jetez un oeil à
jc
qui convertit la sortie des commandes classiques en JSON.

Bref, si vous voulez arrêter de souffrir à chaque fois que vous devez extraire un champ d’un JSON interminable, faites un tour sur jq-quest, ça va vous dérouiller les neurones.

Un grand merci à Guillaume pour la découverte.

Source : korben.info