Générateur (jq)
Générateur (en anglais generator) : expression qui produit une suite de valeurs plutôt qu'une seule. En jq, toute expression est un générateur : .[] produit chaque élément d'un tableau, .a, .b deux valeurs, empty aucune, select(cond) zéro ou une. Une expression qui en combine plusieurs essaie toutes les combinaisons, comme des boucles imbriquées, par retour arrière : [.[] | .x * 2] parcourt les éléments un à un et rassemble les résultats.
C'est la clé pour prévoir ce qu'écrit jq : un programme ne transforme pas un document en un document, mais en zéro, une ou plusieurs sorties, chacune écrite à la suite. D'où les surprises classiques : un objet construit avec un champ qui produit deux valeurs donne deux objets, et une construction entre crochets [...] est nécessaire pour retrouver un seul tableau. Le même mot désigne, en Python, une fonction qui produit ses valeurs une à une avec yield.
Dans les cours
- Traiter du texte : grep, sed, awk, jq, leçon 7 : jq : interroger du JSON
- Traiter du texte : grep, sed, awk, jq, leçon 8 : jq : transformer, produire du JSON et choisir son outil