Come usare il comando JQ su Linux

8 ott 2021 3 min di lettura
Come usare il comando JQ su Linux
Indice dei contenuti

Introduzione

JSON è un formato di rappresentazione dei dati utilizzato per archiviare e trasferire dati tra diversi livelli di un'applicazione; memorizza i dati in chiave: coppie di valori.

La sintassi di JSON è stata derivata da JavaScript ma è essa stessa indipendente dal linguaggio. È compatibile con molti linguaggi di programmazione; questi linguaggi includono codice che può essere utilizzato per integrare JSON nel programma; ma sfortunatamente, non possiamo lavorare con JSON direttamente nella shell di Linux in quanto non può interpretarlo. Per lavorare con JSON nella shell Linux utilizziamo una combinazione di strumenti come JQ e sed.

In questo post impareremo a utilizzare il comando JQ per manipolare e lavorare con i dati JSON in una shell Linux.

Come installare il comando JQ

Il comando JQ non è disponibile in alcune distribuzioni Linux per impostazione predefinita; Deve essere scaricato nel sistema prima di poter essere utilizzato sul terminale; Puoi scaricare il comando JQ proprio come qualsiasi altro pacchetto sul tuo sistema. Su Ubuntu 20.04 utilizzare il comando indicato di seguito per installare l'utilità JQ:

sudo apt install jq

Sostituisci semplicemente apt con il gestore di pacchetti del tuo sistema se stai eseguendo una distribuzione diversa da Ubuntu.

Se stai eseguendo una distribuzione come CentOS 8 che ha già JQ per impostazione predefinita, otterrai un output simile a questo:

sudo dnf install jq 

Sintassi

Ora possiamo iniziare a utilizzare il comando JQ poiché è stato installato con successo sul nostro sistema, ma prima diamo un'occhiata alla sintassi del comando JQ:

jq [options]  [file...]

jq [options] --args  [strings...]

jq [options] --jsonargs  [JSON_TEXTS...]

Il comando JQ può essere utilizzato in molti modi diversi; Può essere utilizzato direttamente su un file JSON e può anche essere combinato con molti altri comandi per interpretare i dati JSON. Il comando JQ può essere utilizzato con diversi filtri come il filtro “.”, “|”, “,”o il “.[]” per organizzare i dati JSON.

Il comando JQ prende anche diverse opzioni come argomenti quali il --tab, --stream, --indent n, --unbuffered, e l'opzione directory -L. La sintassi del comando JQ potrebbe sembrare complessa all'inizio, ma ne prenderai familiarità una volta letto l'intero articolo.

Come organizzare i dati JSON usando il comando JQ

La funzione più semplice e utilizzata di frequente dei filtri di comando JQ. Sono utilizzati per organizzare e abbellire i dati JSON durante la stampa su output standard.

In questo esempio, abbiamo un file JSON chiamato employee.json e dobbiamo inviare i dati allo standard output:

{"workers":{"name": "John Brooks","id": "003"}}

Possiamo usare il comando cat per mostrare i dati:

cat employee.json

I dati stampati sullo standard output utilizzando il comando cat sono disorganizzati e disordinati. Possiamo organizzare questi dati utilizzando il comando JQ insieme al filtro ‘.’:

jq '.' employee.json

Ora i dati sono diventati molto più organizzati, colorati e più facili da capire. Questo filtro è particolarmente necessario quando si accede ai dati dalle API; I dati archiviati nelle API possono essere molto disorganizzati e confusi.

Come accedere a una proprietà utilizzando il comando JQ

Il filtro .field insieme al comando JQ può essere utilizzato per accedere alla proprietà dell'oggetto nella shell.

Se vogliamo solo accedere e stampare una singola proprietà sullo standard output, possiamo usare l'operatore .field. Ad esempio per accedere alla proprietà del lavoratore possiamo usare questo comando:

jq '.workers' employee.json

Possiamo anche accedere agli elementi presenti all'interno della proprietà utilizzando l'operatore .field. Per accedere alla voce nome nella proprietà del lavoratore utilizzeremo:

jq '.workers.name' employee.json

Come accedere a un elemento dell'array utilizzando il comando JQ

Possiamo anche accedere e restituire gli elementi presenti all'interno di un array in un file JSON utilizzando l'operatore .[]. Per questo esempio modificheremo il nostro file JSON in modo che assomigli a questo:

[{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]

Per produrre tutti gli array presenti nel file JSON eseguiremo il comando indicato di seguito:

jq '.[]' employee.json

Per produrre solo il secondo array possiamo modificare il comando sopra indicato nel modo seguente:

jq '.[1]' employee.json

Ricorda che l'array inizia da 0 (zero).

Possiamo anche accedere alle proprietà presenti all'interno dell'array utilizzando l'operatore .field. Ad esempio, se vogliamo accedere alla proprietà name nel terzo array, eseguiremo il seguente comando:

jq '.[2].name' employee.json

Allo stesso modo, per accedere a tutte le proprietà del nome all'interno degli array possiamo eseguire questo comando:

jq '.[].name' employee.json 

Conclusione

Il comando JQ viene utilizzato per trasformare i dati JSON in un formato più leggibile e stamparli sull'output standard su Linux. Il comando JQ è costruito attorno ai filtri che vengono utilizzati per trovare e stampare solo i dati richiesti da un file JSON.

In questa guida pratica, abbiamo imparato a utilizzare il comando JQ per organizzare e filtrare i dati JSON.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.