Bash JSON Viewer — jless & JQ_COLORS
Používejte bezplatný JSON Pretty Print přímo v prohlížeči — bez instalace.
Vyzkoušet JSON Pretty Print online →Když potřebujete prohlížeč JSON v bash pro interaktivní průzkum místo skriptování, standardní jq . nestačí — výstup se odscrolluje přes horní část terminálu a nelze se vrátit k 300řádkové odpovědi API. Tento průvodce pokrývá nástroje vytvořené speciálně pro interaktivní prohlížení JSON v terminálu: jless (sbalitelný strom s vim-navigací), JQ_COLORS pro vlastní barevná schémata, jq -C | less -R pro obarvené stránkování, shellové aliasy pro každodenní použití a fx jako alternativu Node.js. Pro skriptování, CI/CD a validační pracovní postupy viz doprovodný průvodce formátováním JSON v Bash. Pro prohlížení v prohlížeči bez instalace nástroj JSON Pretty Print funguje okamžitě. Příklady jsou testovány na Bash 5.x (macOS přes Homebrew, Ubuntu 22.04+) a jsou kompatibilní s Bash 3.2+ (systémový shell macOS).
- •
jless— nejlepší interaktivní prohlížeč JSON pro terminál: sbalitelný strom, vim-klávesy, inkrementální vyhledávání - •
jq -C . | less -R— obarvený scrollovatelný pager bez další instalace nad rámec jq - •
JQ_COLORS— proměnná prostředí přizpůsobující ANSI barevné schéma jq pro každý typ JSON - •
fx— interaktivní prohlížeč JSON na Node.js s podporou myši a JavaScript výrazy - •
alias jv='jless'— jednoslovný příkaz z interaktivního prohlížení dělá zvyk
Interaktivní vs. Skriptové prohlížení JSON
Přesměrování JSON do jq . je správná volba, když chcete formátovaný výstup pro malý datový blok nebo když výsledek jde do dalšího příkazu. Je to špatná volba, když potřebujete zkoumat odpověď API se 200 poli — výstup proletí oknem terminálu a nenechá vás navigovat, sbalovat sekce ani hledat konkrétní pole bez opětovného spuštění příkazu s filtrem. Interaktivní prohlížeče JSON vykreslují stejný formátovaný, obarvený výstup uvnitř trvalého pageru, kde ovládáte navigaci. Data jsou identická; rozdíl je v rozhraní.
# jq . — výstup se odscrolluje pro velké odpovědi curl -s https://api.github.com/users/torvalds | jq . # 300+ řádků proletí — kontext okamžitě ztratíte
# jless — otevře interaktivní pager, nic se neodscrolluje curl -s https://api.github.com/users/torvalds | jless # Celý dokument viditelný, sbalitelný, prohledávatelný s j/k/h/l
jq s explicitními filtry a obsluhou návratových kódů. Skriptovací vzory pokrývá průvodce formátováním JSON v Bash.jless — Interaktivní prohlížeč JSON
jless je specializovaný terminálový prohlížeč JSON. Na rozdíl od pouhého roury přes jq vykresluje dokument jako trvalý sbalitelný strom: každý objekt a pole lze nezávisle rozbalit nebo sbalit pomocí l a h, navigace používá vim-klávesy a inkrementální vyhledávání okamžitě najde jakýkoli klíč nebo hodnotu. Vstup streamuje postupně, takže otevírá velké soubory a odpovědi API za méně než sekundu bez ohledu na velikost — kde jq bufferuje celý dokument před zobrazením. Po jless sahám jako po prvním nástroji vždy, když je odpověď API příliš velká pro rychlý pohled.
Instalace
# macOS brew install jless # Linux — předpřipravený binární soubor z 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/ # Ověření jless --version
Základní použití
# Otevřete lokální soubor — interaktivní prohlížeč se spustí okamžitě jless api-response.json # Přesměrujte jakýkoli JSON stream přímo do jless curl -s https://api.github.com/users/torvalds | jless # Otevřete se všemi uzly sbalenými na nejvyšší úroveň (užitečný výchozí bod pro velké dokumenty) jless --mode line api-response.json # Načtěte konkrétní prvek pole a prohlédněte si ho samostatně jq '.[0]' deployments.json | jless
Navigace a vyhledávání v praxi
# Uvnitř jless: # # j / ↓ dolů # k / ↑ nahoru # l / → rozbalit uzel (nebo Enter) # h / ← sbalit uzel # H sbalit aktuální + všechny sousední → přehled nejvyšší úrovně # L rekurzivně rozbalit vše # # / spustit vyhledávání dopředu — napište název klíče a stiskněte Enter # n / N další / předchozí shoda # # g / gg přejít na začátek # G přejít na konec # q ukončit
Přehled klávesových zkratek jless
Všechny zkratky jsou dostupné ihned po otevření jless — není potřeba žádná konfigurace. Navigační model je záměrně identický s vim, aby se přenesla stávající svalová paměť.
jq -C | less -R — Obarvené stránkování bez dalších nástrojů
Pokud jless není nainstalován a potřebujete scrollovatelný, obarvený pohled na JSON odpověď, jq -C . | less -R je solidní záloha. Přepínač -C vynucuje ANSI barevné kódy i když je stdout roura (normálně jq je odstraňuje) a -R říká less, aby tyto kódy interpretoval místo tisknutí jako doslovný text. Výsledkem je plně obarvený, scrollovatelný dokument — bez interaktivní stromové struktury jless. Navigace uvnitř less používá šipkové klávesy nebo vim-style j/ka / spustí vestavěné textové hledání less.
# Základní obarvený pager jq -C . response.json | less -R # Z curl odpovědi — -s zabrání zobrazení progress baru ve streamu JSON curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R # Seřaďte klíče pro snazší vizuální procházení, pak stránkujte jq -CS . config.json | less -R # -C = vynutit barvy, -S = seřadit klíče (oba přepínače dohromady) # Přidejte alias, abyste nemuseli pokaždé psát celou rouru alias jqv='jq -C . | less -R' # Použití: cat response.json | jqv # nebo: curl -s https://api.example.com/status | jqv
jq -C | less -R bufferuje celý formátovaný výstup před tím, než less může cokoliv zobrazit. Na souboru 200 MB to znamená čekání několika sekund a spotřebu značné paměti — stejné omezení jako u prostého jq .. Pro velké soubory použijte jless, který streamuje postupně.JQ_COLORS — Vlastní barevná schémata
JQ_COLORS je proměnná prostředí přepisující výchozí ANSI barevné schéma jq. Přijímá řetězec sedmi kódů attribute;color oddělených dvojtečkami, jeden pro každý typ JSON v tomto pevném pořadí: null : false : true : čísla : řetězce : pole : objekty. Každý kód je ve formátu atribut;barva, kde atribut je 0 (normální), 1 (tučné), 2 (ztlumené) nebo 4 (podtržené) a barva je standardní číslo ANSI (30–37 = standardní, 90–97 = jasné).
# Reference ANSI barev pro sestavení JQ_COLORS: # Atributy: 0=normální 1=tučné 2=ztlumené 4=podtržené # Barvy: 30=černá 31=červená 32=zelená 33=žlutá # 34=modrá 35=magenta 36=azurová 37=bílá # Jasné: 90=jasně-černá 91=jasně-červená 92=jasně-zelená 93=jasně-žlutá # 94=jasně-modrá 95=jasná-magenta 96=jasně-azurová 97=jasně-bílá # # Pořadí: null : false : true : čísla : řetězce : pole : objekty # Vysoký kontrast pro tmavé terminály (doporučeno) export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # null=tmavě-šedá, false=jasně-červená, true=jasně-zelená, # numbers=jasně-žlutá, strings=zelená, arrays=tučně-azurová, objects=tučně-azurová # Motiv ve stylu Solarized export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34" # null=ztlumené-bílá, false=magenta, true=magenta, # numbers=azurová, strings=žlutá, arrays=tučně-modrá, objects=tučně-modrá # Minimální (pouze tučné klíče, vše ostatní normální) export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
# Přidejte zvolený motiv do ~/.bashrc nebo ~/.zshrc pro použití při každém volání jq
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc
# Otestujte motiv
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .JQ_COLORS musí mít přesně sedm hodnot oddělených dvojtečkami. Pokud má řetězec méně segmentů, jq tiše přejde na vestavěné výchozí hodnoty bez jakékoliv chybové zprávy — díky čemuž je špatná konfigurace obtížně diagnostikovatelná. Vždy otestujte nový barevný řetězec na krátkém JSON datovém bloku před přidáním do profilu shellu.Shellové aliasy pro každodenní prohlížení JSON
Příkazy pro interaktivní prohlížení JSON jsou ve výchozím nastavení upovídané. Malá sada aliasů v ~/.bashrc nebo ~/.zshrc z jless a obarveného stránkování dělá jednoslovné příkazy, které přirozeně zapadají do jakéhokoliv pracovního postupu. Aliasy níže se skládají — jv a jvp přijímají jak vstup z roury, tak název souboru jako první argument.
# Přidejte do ~/.bashrc nebo ~/.zshrc
# jv — interaktivní prohlížeč (jless pokud dostupný, obarvený pager jako záloha)
jv() {
if command -v jless &>/dev/null; then
jless "$@"
else
jq -C . "$@" | less -R
fi
}
# jvp — prohlížení s klíči seřazenými abecedně (užitečné pro porovnávání odpovědí)
alias jvp='jq -CS . | less -R'
# jvc — prohlížení ze schránky (macOS)
alias jvc='pbpaste | jless'
# jvf — prohlížení s filtrem: jvf '.users[0]' response.json
jvf() {
local filter="$1"; shift
jq -C "$filter" "$@" | less -R
}
# Načtení bez restartu terminálu
source ~/.bashrc# Příklady použití po přidání aliasů # Prohlédnutí libovolného souboru nebo odpovědi z roury jv deployment-config.json curl -s https://api.github.com/users/torvalds | jv # Prohlédnutí seřazené (snadno prohledatelné abecedně) cat feature-flags.json | jvp # Prozkoumání subdokumentu interaktivně jvf '.database' infra/app-config.json jvf '.users[] | select(.role == "admin")' users.json
bat — Prohlížení JSON souborů se zvýrazněním syntaxe
bat je náhrada za cat se zvýrazněním syntaxe, čísly řádků a vestavěným pagerem. Pro JSON soubory na disku poskytuje čisté, editorové čtení bez otevírání plnohodnotného textového editoru. Na rozdíl od jless bat vykresluje soubor jako statický text — žádné sbalování, žádné vyhledávání, žádná navigace mimo scrollování. Jeho silou je vizuální přehlednost pro statické soubory středně velkých rozměrů (konfigurace, fixtures, testové datové bloky), kde chcete zvýraznění syntaxe a čísla řádků, ale nepotřebujete interaktivní stromovou navigaci.
# macOS brew install bat # Debian / Ubuntu (binární soubor může být pojmenován batcat) apt-get install -y bat # alias bat=batcat # přidejte do ~/.bashrc pokud je potřeba na Ubuntu # Prohlédněte JSON soubor se zvýrazněním syntaxe a čísly řádků bat config/feature-flags.json # Vypněte pager — tiskněte přímo do terminálu (užitečné ve skriptech) bat --paging=never api-response.json # Kombinujte s jq: formátujte přes jq, prohlédněte přes bat (zachovává zvýraznění JSON) jq '.' response.json | bat --language=json --paging=never
bat pro čtení statických konfiguračních souborů a testovacích fixtures, kde záleží na číslech řádků (např. když selhání testu odkazuje na řádek 47 souboru fixture). Pro API odpovědi a dynamický JSON z curl je jless rychlejší na otevření a praktičtější pro navigaci. Pokud potřebujete prohlédnout v prohlížeči a sdílet s kolegou, vložte přímo do nástroje JSON Pretty Print — terminál není potřeba.fx — Interaktivní průzkumník JSON na Node.js
fx je interaktivní prohlížeč JSON postavený na Node.js. Jeho rozhraní je podobné jless — sbalitelný strom, klávesová navigace, vyhledávání — ale přidává dvě funkce, které jless postrádá: podpora myši (kliknutím rozbalíte/sbalíte uzly) a možnost zadat JavaScript výraz ve spodním řádku pro filtrování dokumentu v reálném čase. Pro týmy již provozující Node.js je fx přirozenou volbou a nevyžaduje samostatný binární soubor. V čistých terminálových prostředích bez Node je jless lehčí volbou.
# Globální instalace přes npm npm install -g fx # Nebo spuštění bez instalace (npx cachuje balíček) curl -s https://api.github.com/users/torvalds | npx fx # Základní interaktivní použití fx api-response.json curl -s https://api.github.com/repos/jqlang/jq | fx # Ve fx: šipkové klávesy pro navigaci, Enter rozbalí/sbalí, / vyhledává # Spodní řádek přijímá JavaScript výrazy pro živé filtrování: # .name → ukáže pouze pole "name" # .repos.slice(0,5) → prvních 5 repozitářů
# fx funguje také jako neinteraktivní formátor (jako jq . ale s JS syntaxí)
# Předejte JavaScript výraz jako argument — žádný interaktivní režim
echo '{"users":[{"id":1,"name":"Sarah Chen"},{"id":2,"name":"Marcus Osei"}]}' \
| fx '.users[0].name'
# Sarah Chen
# Řetězení s map pro transformace polí
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'Časté chyby
Tyto čtyři chyby se opakují, když vývojáři začínají používat terminálové prohlížeče JSON — každá má jasné řešení, jakmile pochopíte proč k ní dochází.
Problém: jq . vypíše celý výstup do stdout najednou. Pro odpovědi delší než výška terminálu vše nad posledním zobrazením zmizí — nelze se vrátit na začátek ani přejít na konkrétní pole.
Řešení: Přesměrujte do jless pro interaktivní navigaci nebo použijte jq -C . | less -R jako zálohu. Obě možnosti zachovají celý dokument přístupný bez ohledu na jeho velikost.
# 300řádková API odpověď — prvních 280 řádků okamžitě odscrolluje curl -s https://api.github.com/users/torvalds | jq . # Viditelný pouze spodek výstupu — nelze se vrátit
# Celý dokument přístupný v jless — nic se neztrácí curl -s https://api.github.com/users/torvalds | jless # j/k pro scrollování, h/l pro sbalení/rozbalení, / pro vyhledávání
Problém: JQ_COLORS vyžaduje přesně sedm hodnot oddělených dvojtečkami. Pokud má řetězec šest nebo osm hodnot, jq tiše ignoruje celou proměnnou a vrátí se k vestavěným výchozím hodnotám — bez varování, bez chyby, jen špatné barvy.
Řešení: Spočítejte dvojtečky: platný řetězec JQ_COLORS má přesně šest dvojteček a sedm hodnot. Vypište proměnnou a přesměrujte do tr pro počítání.
# Pouze 6 hodnot — jq tiše použije výchozí hodnoty, bez označení proč
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq . # barvy nezměněny — žádná chyba zobrazena# Přesně 7 hodnot — 6 dvojteček export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # Ověřte počet před přidáním do profilu shellu echo "$JQ_COLORS" | tr -cd ':' | wc -c # musí vypsat 6
Problém: jless a fx vykreslují své interaktivní rozhraní do terminálu (TTY), ne do stdout. Přesměrování do grep, tee nebo jiného příkazu produkuje zkomolené ANSI escape kódy nebo prázdný výstup — interaktivní výstup prohlížeče není navržen pro konzumaci jinými programy.
Řešení: Používejte jq s explicitním filtrem pro programové extrahování dat. Používejte jless a fx pouze jako poslední krok v pipeline, když člověk čte výstup.
# Výstup jless je pro lidské oči — přesměrování produkuje nesmysly jless response.json | grep "request_id" # Výstup: ANSI escape kódy a řídicí sekvence, ne čistý text
# Použijte jq pro programové extrahování — čisté, kompozitovatelné jq -r '.request_id' response.json | grep "req_" # Používejte jless pouze jako koncový bod v terminálu — nic za ním jless response.json
Problém: -C vynucuje ANSI barevné kódy do výstupního proudu. Když je tento proud vytištěn přímo do terminálu, který není v raw módu — nebo přesměrován do nástroje, který neinterpretuje ANSI — escape sekvence se objevují jako doslovné znaky jako ^[[1;34m zaplňující výstup.
Řešení: Vždy párujte jq -C s less -R. Přepínač -R přepne less do režimu raw-input a říká mu renderovat ANSI sekvence jako barvy namísto tisknutí jako text.
# -C bez -R: escape sekvence tisknuty jako surový text jq -C . response.json | less # Výstup: ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C s -R: ANSI kódy vykresleny jako skutečné barvy jq -C . response.json | less -R # Výstup: obarvený JSON, čistý a čitelný
jless vs jq vs bat vs fx — Porovnání interaktivních prohlížečů
Všechny čtyři nástroje vykreslují obarvený JSON, ale jejich interaktivní možnosti se výrazně liší. Vybírejte podle toho, zda potřebujete sbalitelnou navigaci, vyhledávání nebo podporu myši — a zda je Node.js již ve vašem prostředí.
Ve většině situací: nainstalujte jless jednou a používejte jako výchozí interaktivní prohlížeč. Ponechte si jq -C . | less -R jako zálohu pro prostředí, kde nemůžete instalovat další binární soubory. Přidejte fx pokud je váš tým primárně na Node.js a cení si navigaci myší nebo živé JavaScript filtrování.
Často kladené otázky
Jak vyhledat konkrétní klíč v JSON souboru v terminálu?
V jless stiskněte /, čímž otevřete prompt inkrementálního hledání, zadejte název klíče a stiskněte Enter. Použijte n pro přechod na další shodu a N na předchozí. Vyhledávání rozlišuje ve výchozím nastavení velká a malá písmena. V jq -C | less -R znak / spustí vestavěné hledání less, které hledá v surových textech včetně ANSI kódů — hledání v jless je spolehlivější pro strukturovaný JSON.
# Otevřete soubor v jless, poté stiskněte / pro vyhledávání jless api-response.json # V jless: napište / → "request_id" → Enter → n pro další shodu # Alternativa s jq: extrahujte a vytiskněte všechny odpovídající klíče jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json
Jak procházet hluboko vnořenou JSON strukturu pomocí klávesových zkratek?
jless napodobuje navigaci vim: j/k pro pohyb nahoru/dolů, h pro sbalení uzlu, l pro rozbalení. Stiskněte H pro sbalení aktuálního uzlu a všech jeho sousedů najednou — užitečné pro získání přehledu před prozkoumáváním konkrétní větve. L vše rekurzivně rozbalí. Jakmile sbalíte vše na nejvyšší úroveň, rozbalte pouze cestu, která vás zajímá, pomocí l.
# Otevřete odpověď v jless curl -s https://api.github.com/repos/jqlang/jq | jless # V jless: # H → sbalte všechny klíče nejvyšší úrovně # j/k → přejděte na klíč, který chcete # l → rozbalte pouze tuto větev # gg → návrat ke kořenu # G → skok na poslední prvek
Jak zlepšit čitelnost barevného výstupu jq na tmavém terminálu?
Nastavte proměnnou prostředí JQ_COLORS s ANSI kódy attribute;color pro každý typ JSON. Sedm pozic v pořadí: null, false, true, čísla, řetězce, pole, objekty. Vložte export do ~/.bashrc nebo ~/.zshrc pro použití při každém volání jq. Tučné jasné barvy fungují nejlépe na tmavém pozadí.
# Vysoký kontrast pro tmavé terminály — přidejte do ~/.bashrc nebo ~/.zshrc
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=šedá, false=jasně-červená, true=jasně-zelená,
# numbers=jasně-žlutá, strings=zelená, arrays/objects=jasně-azurová
# Test bez restartování shellu
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .Jaký je rozdíl mezi jless a jq . pro prohlížení JSON?
jq . odescrolluje výstup přes horní část terminálu a nedává žádný způsob, jak se vrátit zpět — užitečné pro malé odpovědi, ale nepraktické pro cokoli nad 50 řádků. jless vykreslí celý dokument v interaktivním pageru, kde lze scrollovat, vyhledávat, sbalovat uzly a navigovat pomocí klávesových zkratek bez ztráty kontextu. Použijte jq . pro rychlý pohled na malá data; jless když potřebujete zkoumat.
# Malá data — jq . je v pořádku
echo '{"status":"ok","version":"2.4.1"}' | jq .
# Velká nebo vnořená odpověď — jless je lepší
curl -s https://api.github.com/repos/jqlang/jq | jless
# → interaktivní strom, nic neodjede z obrazovkyJak interaktivně prohlížet JSON z curl odpovědi v terminálu?
Přesměrujte curl přímo do jless. Vždy používejte -s (silent), aby se ukazatel průběhu curl neobjevil ve výstupu. jless otevře interaktivní prohlížeč s celou odpovědí vykreslenou jako sbalitelný strom. Pokud jless není nainstalován, jq -C . | less -R poskytne jako zálohu obarvený pager.
# Interaktivní průzkum s jless curl -s https://api.github.com/users/torvalds | jless # Obarvený pager jako záloha (bez sbalování, ale stále scrollovatelný s barvami) curl -s https://api.github.com/users/torvalds | jq -C . | less -R
Mohu prohlížet více JSON souborů vedle sebe v terminálu?
jless otevírá vždy jeden soubor. Pro zobrazení vedle sebe použijte terminálový multiplexer: tmux split-window -h otevře vertikální rozdělení, poté spusťte jless v každém panelu s jiným souborem. Případně použijte prohlížečový nástroj JSON Diff pro strukturální porovnání dvou dokumentů.
# tmux vedle sebe: horizontální rozdělení, pak jless v každém panelu tmux split-window -h # Levý panel: jless response-v1.json # Pravý panel: jless response-v2.json # Nebo diff na výstupu normalizovaném přes jq diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)
Související nástroje
Nástroj JSON Pretty Print vám dává stejný sbalitelný, obarvený pohled jako jless — přímo v prohlížeči, bez instalace a bez terminálu.
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.