objectif
Extraire des éléments d’un JSON massif de façon mémoire-constante.
code minimal
# sortir toutes les valeurs d'une clé 'id' sous .items[]
jq --stream 'select(length==2 and .[0][-1]=="id") | .[1]' big.json
utilisation
# compter les objets sous .logs[]
jq --stream 'select(.[0]|length==2 and .[0][0]=="logs" and .[0][1]|type=="number" and (.[0][1]%1==0)) | 1' big.json | wc -l
variante(s) utile(s)
# filtrer les évènements dont .type == "error" (approche stream)
jq --stream 'select(length==2 and .[0][-1]=="type" and .[1]=="error")' big.json
notes
- en mode stream, chaque sortie est un couple [chemin, valeur].
- plus verbeux mais efficace pour de très gros fichiers.