Visualizzatore JSON Bash — jless & JQ_COLORS
Usa il Abbellitore JSON gratuito direttamente nel tuo browser — nessuna installazione.
Prova Abbellitore JSON online →Quando hai bisogno di un visualizzatore JSON in bashper l'esplorazione interattiva anziché per lo scripting, il pipe standard jq .non basta — l'output scorre oltre la cima del terminale e non hai modo di tornare indietro in una risposta API di 300 righe. Questa guida copre gli strumenti creati specificamente per visualizzare JSON in modo interattivo nel terminale: jless (albero comprimibile con navigazione stile vim), JQ_COLORS per temi di colore personalizzati, jq -C | less -Rper la paginazione colorata, alias shell per l'uso quotidiano, e fx come alternativa basata su Node.js. Per scripting, CI/CD e flussi di validazione, consulta la guida complementare Formattare JSON in Bash. Per un visualizzatore nel browser senza installazione, lo strumento Abbellitore JSON funziona istantaneamente. Gli esempi sono testati su Bash 5.x (macOS via Homebrew, Ubuntu 22.04+) e sono compatibili con Bash 3.2+ (shell di sistema macOS).
- •
jless— il miglior visualizzatore JSON interattivo per il terminale: albero comprimibile, tasti vim, ricerca incrementale - •
jq -C . | less -R— paginatore scorrevole e colorato senza installazioni aggiuntive oltre a jq - •
JQ_COLORS— variabile d'ambiente che personalizza lo schema di colori ANSI di jq per ogni tipo JSON - •
fx— visualizzatore JSON interattivo in Node.js con supporto mouse ed espressioni di filtro JavaScript - •
alias jv='jless'— un comando di una parola rende la visualizzazione interattiva un'abitudine di memoria muscolare
Visualizzazione JSON Interattiva vs. con Script
Reindirizzare JSON a jq . è la scelta giusta quando vuoi un output formattato per un piccolo payload, o quando il risultato alimenta un altro comando. È la scelta sbagliata quando hai bisogno di esplorareuna risposta API con 200 campi — l'output scorre oltre la finestra del terminale e non ti lascia alcun modo per navigare, comprimere sezioni o cercare un campo specifico senza rieseguire il comando con un filtro. I visualizzatori JSON interattivi mostrano lo stesso output formattato e colorato all'interno di un paginatore persistente dove controlli la navigazione. I dati sono identici; la differenza è l'interfaccia.
# jq . — l'output scorre fuori dallo schermo per le grandi risposte curl -s https://api.github.com/users/torvalds | jq . # Più di 300 righe scorrono — perdi immediatamente il contesto
# jless — apre un paginatore interattivo, nulla scorre fuori dallo schermo curl -s https://api.github.com/users/torvalds | jless # Documento completo visibile, comprimibile, ricercabile con j/k/h/l
jq con filtri espliciti e gestione dei codici di uscita. La guida Formattare JSON in Bash copre questi pattern di scripting.jless — Visualizzatore JSON Interattivo
jless è un visualizzatore JSON da terminale creato appositamente per questo scopo. A differenza di un semplice pipe jq, mostra il documento come un albero comprimibile persistente: ogni oggetto e array può essere espanso o compresso indipendentemente con l e h, la navigazione usa i tasti stile vim, e la ricerca incrementale trova istantaneamente qualsiasi chiave o valore. Trasmette l'input in modo incrementale, quindi apre file grandi e risposte API in meno di un secondo indipendentemente dalla dimensione — mentre jq mette in buffer l'intero documento prima di visualizzare qualsiasi cosa. Mi rivolgo istintivamente a jless ogni volta che una risposta API è troppo grande per essere analizzata a colpo d'occhio.
Installazione
# macOS brew install jless # Linux — binario precompilato da GitHub Releases curl -sL https://github.com/PaulJuliusMartinez/jless/releases/latest/download/jless-x86_64-unknown-linux-gnu.tar.gz \ | tar xz sudo mv jless /usr/local/bin/ # Verificare jless --version
Utilizzo di base
# Aprire un file locale — il visualizzatore albero interattivo si avvia immediatamente jless api-response.json # Reindirizzare qualsiasi flusso JSON direttamente in jless curl -s https://api.github.com/users/torvalds | jless # Aprire con tutti i nodi compressi al livello superiore (punto di partenza utile per documenti grandi) jless --mode line api-response.json # Caricare un elemento specifico di un array e visualizzarlo in isolamento jq '.[0]' deployments.json | jless
Navigazione e ricerca nella pratica
# Dentro jless: # # j / ↓ scendere # k / ↑ salire # l / → espandere nodo (o Invio) # h / ← comprimere nodo # H comprimere corrente + tutti i fratelli → panoramica di alto livello # L espandere tutto ricorsivamente # # / avviare ricerca in avanti — digita un nome di chiave e premi Invio # n / N risultato di ricerca successivo / precedente # # g / gg saltare all'inizio # G saltare alla fine # q uscire
Riferimento Scorciatoie da Tastiera di jless
Tutte le scorciatoie sono disponibili immediatamente dopo aver aperto jless — nessuna configurazione richiesta. Il modello di navigazione è intenzionalmente identico a vim in modo che la memoria muscolare esistente sia trasferibile.
jq -C | less -R — Paginazione Colorata Senza Strumenti Aggiuntivi
Se jless non è installato e hai bisogno di una visualizzazione scorrevole e colorata di una risposta JSON, jq -C . | less -R è un valido fallback. Il flag -C forza i codici colore ANSI anche quando stdout è un pipe (normalmente jq li rimuove), e -R indica a less di renderizzare quei codici invece di stamparli come testo letterale. Il risultato è un documento completamente colorato e scorrevole — senza la struttura ad albero interattiva di jless. La navigazione dentro less usa i tasti freccia o i tasti stile vim j/k, e / attiva la ricerca testuale integrata di less.
# Paginatore colorato di base jq -C . response.json | less -R # Da una risposta curl — -s impedisce alla barra di avanzamento di corrompere il flusso JSON curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R # Ordinare le chiavi per facilitare la scansione visiva, poi paginare jq -CS . config.json | less -R # -C = forza il colore, -S = ordina le chiavi (entrambi i flag combinati) # Aggiungere un alias per non dover digitare mai più il pipe completo alias jqv='jq -C . | less -R' # Utilizzo: cat response.json | jqv # o: curl -s https://api.example.com/status | jqv
jq -C | less -Rmette in buffer l'intero output formattato prima che less possa visualizzarlo. Su un file da 200 MB questo significa attendere diversi secondi e consumare molta memoria — la stessa limitazione del jq . semplice. Per i file grandi, usa jless invece, che trasmette in modo incrementale.JQ_COLORS — Temi di Colore Personalizzati
JQ_COLORS è una variabile di ambiente che sovrascrive lo schema di colori ANSI predefinito di jq. Accetta una stringa di sette codici attributo ANSI;colore separati da due-punti, uno per tipo JSON in questo ordine fisso: null : false : true : numeri : stringhe : array : oggetti. Ogni codice è nel formato attributo;coloredove l'attributo è 0 (normale), 1 (grassetto), 2 (attenuato) o 4 (sottolineato), e il colore è un numero di colore ANSI standard (30–37 = standard, 90–97 = vivace).
# Riferimento colori ANSI per costruire JQ_COLORS: # Attributi: 0=normale 1=grassetto 2=attenuato 4=sottolineato # Colori: 30=nero 31=rosso 32=verde 33=giallo # 34=blu 35=magenta 36=ciano 37=bianco # Vivaci: 90=nero-vivace 91=rosso-vivace 92=verde-vivace 93=giallo-vivace # 94=blu-vivace 95=magenta-vivace 96=ciano-vivace 97=bianco-vivace # # Ordine: null : false : true : numeri : stringhe : array : oggetti # Tema ad alto contrasto per terminali scuri (consigliato) export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # null=grigio-attenuato, false=rosso-vivace, true=verde-vivace, # numeri=giallo-vivace, stringhe=verde, array=ciano-grassetto, oggetti=ciano-grassetto # Tema stile Solarized export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34" # null=bianco-attenuato, false=magenta, true=magenta, # numeri=ciano, stringhe=giallo, array=blu-grassetto, oggetti=blu-grassetto # Minimale (solo chiavi in grassetto, tutto il resto normale) export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
# Aggiungere il tema scelto a ~/.bashrc o ~/.zshrc per applicarlo a ogni chiamata jq
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc
# Testare il tema
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .JQ_COLORS deve avere esattamente sette valori separati da due-punti. Se la stringa ha meno segmenti, jq torna silenziosamente ai suoi valori predefiniti compilati senza alcun messaggio di errore — rendendo la configurazione errata difficile da diagnosticare. Testa sempre una nuova stringa di colori su un breve payload JSON prima di aggiungerla al tuo profilo shell.Alias Shell per la Visualizzazione Quotidiana di JSON
I comandi per la visualizzazione interattiva di JSON sono verbosi per impostazione predefinita. Un piccolo set di alias in ~/.bashrc o ~/.zshrc trasforma jless e la paginazione colorata in comandi di una sola parola che si integrano naturalmente in qualsiasi flusso di lavoro. Gli alias seguenti si compongono — jv e jvp accettano entrambi input reindirizzato o un nome file come primo argomento.
# Aggiungere a ~/.bashrc o ~/.zshrc
# jv — visualizzatore interattivo (jless se disponibile, paginatore colorato come fallback)
jv() {
if command -v jless &>/dev/null; then
jless "$@"
else
jq -C . "$@" | less -R
fi
}
# jvp — visualizzare con le chiavi ordinate alfabeticamente (utile per confrontare risposte)
alias jvp='jq -CS . | less -R'
# jvc — visualizzare dagli appunti (macOS)
alias jvc='pbpaste | jless'
# jvf — visualizzare e filtrare: jvf '.users[0]' response.json
jvf() {
local filter="$1"; shift
jq -C "$filter" "$@" | less -R
}
# Ricaricare senza riavviare il terminale
source ~/.bashrc# Esempi di utilizzo dopo aver aggiunto gli alias sopra # Visualizzare qualsiasi file o risposta reindirizzata jv deployment-config.json curl -s https://api.github.com/users/torvalds | jv # Visualizzare ordinato (facile da scorrere alfabeticamente) cat feature-flags.json | jvp # Esplorare un sotto-documento in modo interattivo jvf '.database' infra/app-config.json jvf '.users[] | select(.role == "admin")' users.json
bat — Visualizzazione di File JSON con Evidenziazione della Sintassi
bat è un sostituto di cat con evidenziazione della sintassi, numeri di riga e un paginatore integrato. Per i file JSON su disco offre un'esperienza di lettura pulita, simile a un editor, senza aprire un editor di testo completo. A differenza di jless, bat mostra il file come testo statico — senza compressione, senza ricerca, senza navigazione oltre lo scorrimento. Il suo punto di forza è la chiarezza visiva per file statici di medie dimensioni (configurazioni, fixture, payload di test) dove vuoi il colore della sintassi e i numeri di riga ma non hai bisogno di navigazione ad albero interattiva.
# macOS brew install bat # Debian / Ubuntu (il binario potrebbe chiamarsi batcat) apt-get install -y bat # alias bat=batcat # aggiungere a ~/.bashrc se necessario su Ubuntu # Visualizzare un file JSON con evidenziazione della sintassi e numeri di riga bat config/feature-flags.json # Disabilitare il paginatore — stampare direttamente nel terminale (utile negli script) bat --paging=never api-response.json # Combinare con jq: formattare con jq, visualizzare con bat (preserva l'evidenziazione JSON di bat) jq '.' response.json | bat --language=json --paging=never
bat per leggere file di configurazione statici e fixture di test dove i numeri di riga sono importanti (ad es., quando un errore di test fa riferimento alla riga 47 di un file fixture). Per le risposte API e il JSON dinamico proveniente da curl, jless è più veloce da aprire e più pratico da navigare. Se devi visualizzare nel browser e condividere con un collega, incolla direttamente nello strumento Abbellitore JSON — nessun terminale richiesto.fx — Esploratore JSON Interattivo in Node.js
fxè un visualizzatore JSON interattivo costruito su Node.js. La sua interfaccia è simile a jless — albero comprimibile, navigazione da tastiera, ricerca — ma aggiunge due funzionalità che jless non ha: il supporto del mouse (clic per espandere/comprimere i nodi) e la possibilità di digitare un'espressione JavaScript nella barra inferiore per filtrare il documento in tempo reale. Per i team che già usano Node.js, fx è una scelta naturale e non richiede un binario separato. Per ambienti di terminale puro senza Node, jless è la scelta più leggera.
# Installare globalmente tramite npm npm install -g fx # Oppure eseguire senza installare (npx mette il pacchetto in cache) curl -s https://api.github.com/users/torvalds | npx fx # Utilizzo interattivo di base fx api-response.json curl -s https://api.github.com/repos/jqlang/jq | fx # In fx: i tasti freccia navigano, Invio espande/comprime, / cerca # La barra inferiore accetta espressioni JavaScript per il filtraggio in tempo reale: # .name → mostrare solo il campo "name" # .repos.slice(0,5) → primi 5 repos
# fx funziona anche come formattatore non interattivo (come jq . ma con sintassi JS)
# Passa un'espressione JavaScript come argomento — nessuna modalità interattiva
echo '{"users":[{"id":1,"name":"Marco Conti"},{"id":2,"name":"Laura Bianchi"}]}' \
| fx '.users[0].name'
# Marco Conti
# Concatenare con map per trasformazioni di array
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'Errori Comuni
Questi quattro errori ricorrono costantemente quando gli sviluppatori iniziano a usare i visualizzatori JSON nel terminale — ognuno ha una correzione chiara una volta capito il motivo.
Problema: jq . scarica tutto l'output su stdout in una volta. Per le risposte più lunghe dell'altezza del terminale, tutto ciò che sta sopra l'ultimo schermo scompare — non puoi tornare all'inizio né navigare verso un campo specifico.
Soluzione: Reindirizza a jless per la navigazione interattiva, o usa jq -C . | less -R come fallback. Entrambi mantengono l'intero documento accessibile indipendentemente dalla sua dimensione.
# Risposta API di 300 righe — le prime 280 righe scorrono immediatamente curl -s https://api.github.com/users/torvalds | jq . # Solo la parte inferiore dell'output è visibile — impossibile tornare indietro
# L'intero documento rimane accessibile in jless — nulla viene perso curl -s https://api.github.com/users/torvalds | jless # j/k per scorrere, h/l per comprimere/espandere, / per cercare
Problema: JQ_COLORS richiede esattamente sette valori separati da due-punti. Se la stringa ha sei o otto valori, jq ignora silenziosamente l'intera variabile e torna ai suoi valori predefiniti compilati — senza avvisi, senza errori, solo i colori sbagliati.
Soluzione: Conta i due-punti: una stringa JQ_COLORS valida ha esattamente sei due-punti e sette valori. Fai echo della variabile e reindirizza a tr per contare.
# Solo 6 valori — jq usa i valori predefiniti silenziosamente, senza indicazione del motivo
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq . # colori invariati — nessun errore mostrato# Esattamente 7 valori — 6 due-punti export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # Verificare il conteggio prima di aggiungere al profilo shell echo "$JQ_COLORS" | tr -cd ':' | wc -c # deve mostrare 6
Problema: jless e fx mostrano la loro interfaccia interattiva al terminale (un TTY), non a stdout. Reindirizzarli a grep, tee o qualsiasi altro comando produce codici di escape ANSI disordinati o output vuoto — l'output interattivo del visualizzatore non è pensato per essere consumato da altri programmi.
Soluzione: Usa jq con un filtro esplicito per estrarre dati in modo programmatico. Usa jless e fx solo come passo finale in una pipeline quando un umano legge l'output.
# L'output di jless è per occhi umani — reindirizzarlo produce spazzatura jless response.json | grep "request_id" # Output: codici di escape ANSI e sequenze cursore, non testo pulito
# Usa jq per l'estrazione programmatica — pulito e componibile jq -r '.request_id' response.json | grep "req_" # Usa jless solo come punto finale del terminale — nulla dopo di esso jless response.json
Problema: -C forza i codici colore ANSI nel flusso di output. Quando quel flusso viene stampato direttamente su un terminale che non è in modalità raw — o reindirizzato a uno strumento che non interpreta ANSI — le sequenze di escape appaiono come caratteri letterali come ^[[1;34m che sporcano l'output.
Soluzione: Combina sempre jq -C con less -R. Il flag -R mette less in modalità input raw, indicandogli di renderizzare le sequenze ANSI come colori invece di stamparle come testo.
# -C senza -R: le sequenze di escape vengono stampate come testo grezzo jq -C . response.json | less # Output: ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C con -R: i codici ANSI vengono renderizzati come colori reali jq -C . response.json | less -R # Output: JSON colorato, pulito e leggibile
jless vs jq vs bat vs fx — Confronto dei Visualizzatori Interattivi
Tutti e quattro gli strumenti mostrano JSON colorato, ma le loro capacità interattive differiscono significativamente. Scegli in base a se hai bisogno di navigazione comprimibile, ricerca o supporto mouse — e se Node.js è già nel tuo ambiente.
Per la maggior parte delle situazioni: installa jless una volta e usalo come visualizzatore interattivo predefinito. Mantieni jq -C . | less -R come fallback per gli ambienti dove non puoi installare binari aggiuntivi. Aggiungi fx se il tuo team è principalmente Node.js e apprezza la navigazione con il mouse o il filtraggio JavaScript in tempo reale.
Domande Frequenti
Come cerco una chiave specifica all'interno di un file JSON nel terminale?
In jless, premi / per aprire il prompt di ricerca incrementale, digita il nome della chiave e premi Invio. Usa n per avanzare tra le corrispondenze e N per tornare indietro. La ricerca distingue le maiuscole per impostazione predefinita. In jq -C | less -R, / attiva la ricerca integrata di less, che corrisponde al testo grezzo inclusi i codici colore ANSI — la ricerca di jless è più affidabile per JSON strutturato.
# Aprire il file in jless, poi premere / per cercare jless api-response.json # In jless: digita / → "request_id" → Invio → n per la corrispondenza successiva # Alternativa con jq: estrarre e stampare tutte le chiavi corrispondenti su stdout jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json
Come navigo in una struttura JSON profondamente annidata con scorciatoie da tastiera?
jless rispecchia la navigazione vim: j/k per su/giù, h per comprimere un nodo, l per espanderlo. Premi H per comprimere il nodo corrente e tutti i suoi fratelli in una volta — utile per avere una panoramica di alto livello prima di esplorare un ramo specifico. L espande tutto ricorsivamente. Una volta che hai compresso tutto al livello superiore, espandi solo il percorso che ti interessa con l.
# Aprire la risposta in jless curl -s https://api.github.com/repos/jqlang/jq | jless # In jless: # H → comprimere tutte le chiavi di livello superiore # j/k → navigare fino alla chiave desiderata # l → espandere solo quel ramo # gg → tornare alla radice # G → saltare all'ultimo elemento
Come rendere l'output colorato di jq più leggibile su un terminale scuro?
Imposta la variabile di ambiente JQ_COLORS con codici attributo ANSI;colore per ogni tipo JSON. Le sette posizioni sono, in ordine: null, false, true, numeri, stringhe, array, oggetti. Inserisci l'export in ~/.bashrc o ~/.zshrc per applicarlo a ogni chiamata jq. I colori vivaci e in grassetto funzionano meglio su sfondi scuri.
# Tema ad alto contrasto per terminali scuri — aggiungere a ~/.bashrc o ~/.zshrc
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=grigio, false=rosso-vivace, true=verde-vivace,
# numeri=giallo-vivace, stringhe=verde, array/oggetti=ciano-vivace
# Testare immediatamente senza ricaricare la shell
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .Qual è la differenza tra jless e jq . per visualizzare JSON?
jq . fa scorrere l'output oltre la cima del terminale e non offre alcun modo per tornare indietro — utile per piccole risposte, ma poco pratico per qualsiasi cosa oltre 50 righe. jless visualizza l'intero documento in un paginatore interattivo dove puoi scorrere, cercare, comprimere nodi e navigare con scorciatoie da tastiera senza perdere il contesto. Usa jq . per dare un'occhiata rapida a un piccolo payload; usa jless quando hai bisogno di esplorare.
# Payload piccolo — jq . va bene
echo '{"status":"ok","version":"2.4.1"}' | jq .
# Risposta grande o annidata — jless è meglio
curl -s https://api.github.com/repos/jqlang/jq | jless
# → albero interattivo, nessun output scorre fuori dallo schermoCome visualizzo JSON da una risposta curl in modo interattivo nel terminale?
Redirige curl direttamente a jless. Includi sempre -s (silenzioso) per evitare che la barra di avanzamento di curl appaia nell'output. jless aprirà il visualizzatore interattivo con l'intera risposta visualizzata come un albero comprimibile. Se jless non è installato, jq -C . | less -R offre un paginatore colorato come soluzione alternativa.
# Esplorazione interattiva con jless curl -s https://api.github.com/users/torvalds | jless # Paginatore colorato come alternativa (senza compressione, ma scorrevole con colori) curl -s https://api.github.com/users/torvalds | jq -C . | less -R
Posso visualizzare più file JSON affiancati nel terminale?
jless apre un file alla volta. Per il confronto affiancato, usa un multiplexer di terminale: tmux split-window -h apre una divisione verticale, poi esegui jless in ogni pannello con un file diverso. In alternativa, usa lo strumento JSON Diff nel browser se hai bisogno di confrontare due documenti strutturalmente.
# tmux affiancato: dividere orizzontalmente, poi eseguire jless in ogni pannello tmux split-window -h # Pannello sinistro: jless response-v1.json # Pannello destro: jless response-v2.json # Oppure usa diff sull'output normalizzato da jq per un diff testuale diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)
Strumenti Correlati
Lo strumento Abbellitore JSON ti offre la stessa vista comprimibile e colorata di jless — direttamente nel browser, senza installazione e senza terminale richiesto.
Cora is a platform engineer who builds developer tooling and internal platforms, using Bash as the glue that connects components written in different languages and runtimes. She writes about cross-platform shell scripting, Bash utility functions, environment management, configuration templating, and the practical shell techniques that platform engineers use to build self-service tooling for development teams.
Nadia is a site reliability engineer who lives in the terminal. She writes Bash scripts that process logs, transform data, and orchestrate infrastructure across fleets of servers. She is a heavy user of jq, awk, and sed and writes about shell one-liners, text processing pipelines, data serialisation from the command line, and the practical Bash patterns that SREs reach for when speed matters more than elegance.