jq è un processore JSON a riga di comando leggero e flessibile, molto simile a sed in quanto consente di suddividere, filtrare, mappare e trasformare i dati da un formato all'altro. Ad esempio, può essere utilizzato per convertire i dati JSON in CSV (valori separati da virgola) per il caricamento in un database MySQL senza colonne JSON. Puoi scaricarlo da https://stedolan.github.io/jq/ e c'è una versione online su https://jqplay.org/ per la sperimentazione. Inoltre, jq usa il parser Perl Compatible Regular Expressions (PCRE), come molti altri linguaggi. (Questo meraviglioso strumento merita di aver scritto molto di più su di esso rispetto ai semplici esempi qui presenti e leggere il manuale è un modo rapido per familiarizzare con le numerose funzionalità di questo strumento.)
Se riscontri un errore di seguito:
jq: command not found (JSON CLI Parser)
Puoi provare a installare il pacchetto sottostante secondo la tua scelta di distribuzione.
Distribuzione | Comando |
---|---|
OS X | brew install jq |
Debian | apt-get install jq |
Ubuntu | apt-get install jq |
Alpino | apk aggiungi jq |
Arci Linux | pacman -S jq |
Kali Linux | apt-get install jq |
Fedora | dnf install jq |
Raspbian | apt-get install jq |
Docker | docker esegui cmd.cat/jq jq |
Senza argomenti per jq, "stamperà graziosamente" il documento JSON. Questo è molto utile per documenti estremamente complessi con molti livelli di oggetti incorporati e array difficili da visualizzare su una singola linea piatta.
Seleziona alcuni campi
In alcune occasioni, non tutti i dati in un documento JSON saranno di interesse e puoi usare jq per riformare i dati e fornire solo parti selezionate. Ad esempio:
$ jq '{city, state, id}' myfile.json
Esempi di comandi jq
1. Genera un file JSON, in formato Pretty Print:
$ jq . file.json
2. Emetti tutti gli elementi dagli array (o tutte le coppie chiave-valore dagli oggetti) in un file JSON:
$ jq .[] file.json
3. Leggi gli oggetti JSON da un file in un array e invialo in output (inverso di `jq .[]`):
$ jq --slurp . file.json
4. Emetti il primo elemento in un file JSON:
$ jq .[0] file.json
5. Emetti il valore di una determinata chiave del primo elemento in un testo JSON da stdin:
$ cat file.json | jq .[0].key_name
6. Emetti il valore di una determinata chiave di ogni elemento in un testo JSON da stdin:
$ cat file.json | jq 'map(.key_name)'
Riepilogo
jq è un processore JSON da riga di comando. Funziona come sed per i dati JSON; puoi usarlo per filtrare, analizzare e trasformare i dati strutturati con la stessa facilità con cui sed, awk o grep ti permettono di fare con il testo non elaborato. Jq è disponibile su GitHub all'indirizzo https://stedolan.github.io/jq/. L'installazione è molto semplice; è solo un singolo binario, disponibile per Windows, macOS e Linux. Basta scaricarlo e copiarlo nella cartella disponibile sul PATH del tuo sistema per poterlo eseguire dalla shell o dalla riga di comando.