Bash JSON Viewer β€” jless & JQ_COLORS

Β·Platform EngineerΒ·Beoordeeld doorNadia OkonkwoΒ·Gepubliceerd

Gebruik de gratis JSON Pretty Print direct in je browser β€” geen installatie nodig.

JSON Pretty Print online uitproberen β†’

Wanneer je een bash JSON-viewer nodig hebt voor interactieve verkenning in plaats van scripting, schiet de standaard jq . pipe tekort β€” de uitvoer scrollt voorbij de bovenkant van de terminal en je kunt niet terug navigeren door een API-response van 300 regels. Deze gids behandelt tools die speciaal zijn gebouwd voor interactief JSON bekijken in de terminal: jless (inklapbare boom met vim-navigatie), JQ_COLORSvoor aangepaste kleurthema's, jq -C | less -R voor gekleurd pagineren, shell-aliassen voor dagelijks gebruik en fx als Node.js-alternatief. Voor scripting, CI/CD en validatieworkflows zie de bijbehorende gids voor JSON formatteren in Bash. Voor een browser-viewer zonder installatie werkt de JSON Pretty Print tool direct. Voorbeelden zijn getest op Bash 5.x (macOS via Homebrew, Ubuntu 22.04+) en zijn compatibel met Bash 3.2+ (macOS systeemshell).

BELANGRIJKSTE PUNTEN
  • β€’ jless β€” de beste interactieve JSON-viewer voor de terminal: inklapbare boom, vim-toetsen, incrementeel zoeken
  • β€’ jq -C . | less -R β€” gekleurde scrollbare pager zonder extra installatie bovenop jq
  • β€’ JQ_COLORS β€” omgevingsvariabele die het ANSI-kleurschema van jq aanpast voor elk JSON-type
  • β€’ fx β€” interactieve Node.js JSON-viewer met muisondersteuning en JavaScript-filterexpressies
  • β€’ alias jv='jless' β€” een éénwoordig commando maakt interactief bekijken een spiergeheugen-gewoonte

Interactief vs. Gescript JSON bekijken

JSON naar jq . pipen is de juiste keuze wanneer je geformatteerde uitvoer wilt voor een kleine payload, of wanneer het resultaat naar een ander commando gaat. Het is de verkeerde keuze wanneer je een API-response van 200 velden moet verkennen β€” de uitvoer vliegt voorbij het terminalvenster en laat je geen manier om te navigeren, secties in te klappen of naar een specifiek veld te zoeken zonder het commando opnieuw uit te voeren met een filter. Interactieve JSON-viewers renderen dezelfde geformatteerde, gekleurde uitvoer binnen een persistente pager waar jij de navigatie beheert. De data is identiek; het verschil zit in de interface.

Before Β· Bash
After Β· Bash
# jq . β€” uitvoer scrollt buiten beeld bij grote responses
curl -s https://api.github.com/users/torvalds | jq .
# 300+ regels scrollen voorbij β€” je verliest direct de context
# jless β€” opent een interactieve pager, niets scrollt weg
curl -s https://api.github.com/users/torvalds | jless
# Volledig document zichtbaar, inklapbaar, doorzoekbaar met j/k/h/l
Opmerking:Interactieve viewers zijn alleen voor menselijke inspectie β€” ze mogen nooit verschijnen in scripts, CI-pipelines of automatisering. Gebruik voor programmatische JSON-verwerking jq met expliciete filters en afhandeling van exitcodes. De gids voor JSON formatteren in Bash behandelt die scriptpatronen.

jless β€” Interactieve JSON-viewer

jless is een doelgebouwde terminal JSON-viewer. In tegenstelling tot een gewone jq-pipe rendert het het document als een persistente inklapbare boom: elk object en elke array kan onafhankelijk worden uitgevouwen of ingeklapt met l en h, navigatie gebruikt vim-stijl toetsen en incrementeel zoeken vindt elke sleutel of waarde direct. Het streamt invoer incrementeel, dus het opent grote bestanden en API-responses in minder dan een seconde ongeacht de grootte β€” waar jq het hele document buffert voor weergave. Ik grijp als eerste naar jless wanneer een API-response te groot is om in één oogopslag te scannen.

Installatie

Bash
# macOS
brew install jless

# Linux β€” voorgebouwd binair bestand van 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/

# Verifieer
jless --version

Basisgebruik

Bash
# Open een lokaal bestand β€” interactieve boomviewer start direct
jless api-response.json

# Pipe elke JSON-stream direct naar jless
curl -s https://api.github.com/users/torvalds | jless

# Open met alle nodes ingeklapt naar het hoogste niveau (handig startpunt voor grote documenten)
jless --mode line api-response.json

# Laad een specifiek array-element en bekijk het afzonderlijk
jq '.[0]' deployments.json | jless

Navigatie en zoeken in de praktijk

Bash
# Binnen jless:
#
#   j / ↓        omlaag
#   k / ↑        omhoog
#   l / β†’        node uitklappen (of Enter)
#   h / ←        node inklappen
#   H            huidige + alle siblings inklappen β†’ overzicht op hoog niveau
#   L            alles recursief uitklappen
#
#   /            vooruit zoeken starten β€” typ een sleutelnaam en druk Enter
#   n / N        volgende / vorige zoektreffer
#
#   g / gg       spring naar begin
#   G            spring naar einde
#   q            afsluiten

Overzicht sneltoetsen jless

Alle sneltoetsen zijn direct beschikbaar na het openen van jless β€” geen configuratie nodig. Het navigatiemodel is opzettelijk identiek aan vim zodat bestaand spiergeheugen overdraagt.

Toets
Actie
Wanneer gebruiken
j / ↓
Cursor één regel omlaag
Door objectsleutels of array-items scrollen
k / ↑
Cursor één regel omhoog
Terug naar een eerder veld
J
5 regels omlaag
Sneller door lange arrays scrollen
K
5 regels omhoog
Sneller omhoog navigeren
h / ← / -
Huidige node inklappen
Groot genest object verbergen
l / β†’ / +
Huidige node uitklappen
Ingeklapt object of array openen
H
Huidige node en alle siblings inklappen
Overzicht van de structuur op hoofdniveau
L
Alle nodes recursief uitklappen
Volledige diepte van geneste structuur onthullen
g
Naar begin van document springen
Snel terug naar de root
G
Naar einde van document springen
Springen naar het laatste element in een grote array
/
Vooruit zoeken starten
Specifieke sleutel of waarde in het document zoeken
?
Achteruit zoeken starten
Zoeken vanaf huidige positie omhoog
n
Naar volgende zoektreffer springen
Door alle gevonden overeenkomsten bladeren
N
Naar vorige zoektreffer springen
Achteruit door zoekresultaten stappen
q
jless afsluiten
Afsluiten na voltooide inspectie

jq -C | less -R β€” Gekleurd pagineren zonder extra tools

Als jless niet geΓ―nstalleerd is en je een scrollbare, gekleurde weergave van een JSON-response nodig hebt, is jq -C . | less -R een goede terugvaloptie. De vlag -C forceert ANSI-kleurcodes zelfs wanneer stdout een pipe is (normaal verwijdert jq ze) en -R vertelt less die codes te renderen in plaats van ze als letterlijke tekst af te drukken. Het resultaat is een volledig gekleurd, scrollbaar document β€” zonder de interactieve boomstructuur van jless. Navigatie binnen less gebruikt pijltoetsen of vim-stijl j/k, en / activeert de ingebouwde tekstzoekfunctie van less.

Bash
# Basis gekleurde pager
jq -C . response.json | less -R

# Vanuit een curl-response β€” -s voorkomt dat voortgangsbalk de JSON-stream beschadigt
curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R

# Sorteer sleutels voor gemakkelijker visueel scannen, dan pagineer
jq -CS . config.json | less -R
# -C = forceer kleur, -S = sorteer sleutels (beide vlaggen gecombineerd)

# Voeg een alias toe zodat je de volledige pipe niet steeds hoeft in te typen
alias jqv='jq -C . | less -R'
# Gebruik: cat response.json | jqv
#    of: curl -s https://api.example.com/status | jqv
Opmerking:jq -C | less -R buffert de volledige geformatteerde uitvoer voordat less iets kan weergeven. Op een bestand van 200 MB betekent dit wachten op meerdere seconden en aanzienlijk geheugenverbruik β€” dezelfde beperking als gewone jq .. Gebruik voor grote bestanden jless, dat incrementeel streamt.

JQ_COLORS β€” Aangepaste kleurthema's

JQ_COLORS is een omgevingsvariabele die het standaard ANSI-kleurschema van jq overschrijft. Het accepteert een door dubbele punten gescheiden string van zeven ANSI attribute;color codes, één per JSON-type in deze vaste volgorde: null : false : true : getallen : strings : arrays : objecten. Elke code heeft het formaat attribuut;kleurwaarbij attribuut 0 (normaal), 1 (vet), 2 (dim) of 4 (onderstreept) is en kleur een standaard ANSI-kleurnummer (30–37 = standaard, 90–97 = helder).

Bash
# ANSI-kleurreferentie voor het bouwen van JQ_COLORS:
#   Attributen:  0=normaal  1=vet  2=dim  4=onderstreept
#   Kleuren:     30=zwart  31=rood  32=groen  33=geel
#                34=blauw  35=magenta  36=cyaan  37=wit
#   Helder:      90=helder-zwart  91=helder-rood  92=helder-groen  93=helder-geel
#                94=helder-blauw  95=helder-magenta  96=helder-cyaan  97=helder-wit
#
# Volgorde: null : false : true : getallen : strings : arrays : objecten

# Hoog-contrast thema voor donkere terminals (aanbevolen)
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=dim-grijs, false=helder-rood, true=helder-groen,
# numbers=helder-geel, strings=groen, arrays=vet-cyaan, objects=vet-cyaan

# Solarized-stijl thema
export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34"
# null=dim-wit, false=magenta, true=magenta,
# numbers=cyaan, strings=geel, arrays=vet-blauw, objects=vet-blauw

# Minimaal (alleen vetgedrukte sleutels, de rest normaal)
export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
Bash
# Voeg je gekozen thema toe aan ~/.bashrc of ~/.zshrc zodat het op elk jq-aanroep wordt toegepast
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc

# Test het thema
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .
Waarschuwing:JQ_COLORS moet exact zeven door dubbele punten gescheiden waarden hebben. Als de string minder segmenten heeft, valt jq stilzwijgend terug op de ingebouwde standaardwaarden zonder enige foutmelding β€” waardoor een verkeerde configuratie moeilijk te diagnosticeren is. Test altijd een nieuwe kleurstring op een korte JSON-payload voordat je die toevoegt aan je shell-profiel.

Shell-aliassen voor dagelijks JSON bekijken

De commando's voor interactief JSON bekijken zijn standaard omslachtig. Een kleine set aliassen in ~/.bashrc of ~/.zshrcmaakt jless en gekleurd pagineren tot éénwoordige commando's die van nature passen in elke workflow. De onderstaande aliassen componeren β€” jv en jvp accepteren beide gepipede invoer of een bestandsnaam als eerste argument.

Bash
# Voeg toe aan ~/.bashrc of ~/.zshrc

# jv β€” interactieve viewer (jless indien beschikbaar, gekleurde pager als terugval)
jv() {
  if command -v jless &>/dev/null; then
    jless "$@"
  else
    jq -C . "$@" | less -R
  fi
}

# jvp β€” bekijk met sleutels alfabetisch gesorteerd (handig voor vergelijking van responses)
alias jvp='jq -CS . | less -R'

# jvc β€” bekijk vanuit klembord (macOS)
alias jvc='pbpaste | jless'

# jvf β€” bekijk en filter: jvf '.users[0]' response.json
jvf() {
  local filter="$1"; shift
  jq -C "$filter" "$@" | less -R
}

# Herladen zonder terminal opnieuw te starten
source ~/.bashrc
Bash
# Gebruiksvoorbeelden na het toevoegen van bovenstaande aliassen

# Bekijk elk bestand of gepipede response
jv deployment-config.json
curl -s https://api.github.com/users/torvalds | jv

# Bekijk gesorteerd (gemakkelijk alfabetisch te scannen)
cat feature-flags.json | jvp

# Duik interactief in een subdocument
jvf '.database' infra/app-config.json
jvf '.users[] | select(.role == "admin")' users.json

bat β€” JSON-bestanden bekijken met syntaxismarkering

bat is een vervanging voor cat met syntaxismarkering, regelnummers en een ingebouwde pager. Voor JSON-bestanden op schijf biedt het een overzichtelijke, redacteurachtige leeservaring zonder een volledige teksteditor te openen. In tegenstelling tot jless rendert bat het bestand als statische tekst β€” geen inklappen, geen zoeken, geen navigatie buiten scrollen. Zijn kracht is visuele duidelijkheid voor middelgrote statische bestanden (configs, fixtures, testpayloads) waar je syntaxismarkering en regelnummers wilt maar geen interactieve boomnavigatie nodig hebt.

Bash
# macOS
brew install bat

# Debian / Ubuntu (binary kan batcat heten)
apt-get install -y bat
# alias bat=batcat   # voeg toe aan ~/.bashrc indien nodig op Ubuntu

# Bekijk een JSON-bestand met syntaxismarkering en regelnummers
bat config/feature-flags.json

# Pager uitschakelen β€” direct naar terminal afdrukken (handig in scripts)
bat --paging=never api-response.json

# Combineer met jq: formatteren met jq, bekijken met bat (behoudt JSON-markering)
jq '.' response.json | bat --language=json --paging=never
Opmerking:Gebruik bat voor het lezen van statische configuratiebestanden en testfixtures waar regelnummers belangrijk zijn (bijv. wanneer een testfout verwijst naar regel 47 van een fixture-bestand). Voor API-responses en dynamisch JSON van curl is jless sneller te openen en praktischer te navigeren. Als je in de browser wilt bekijken en delen met een collega, plak direct in de JSON Pretty Print tool β€” geen terminal nodig.

fx β€” Interactieve Node.js JSON-verkenner

fx is een interactieve JSON-viewer gebouwd op Node.js. De interface is vergelijkbaar met jless β€” inklapbare boom, toetsenbordnavigatie, zoeken β€” maar voegt twee functies toe die jless mist: muisondersteuning (klik om nodes uit/in te klappen) en de mogelijkheid om een JavaScript-expressie in de onderste balk te typen om het document in realtime te filteren. Voor teams die al Node.js gebruiken is fx een natuurlijke keuze en vereist geen apart binair bestand. Voor pure terminalomgevingen zonder Node is jless de lichtere keuze.

Bash
# Globaal installeren via npm
npm install -g fx

# Of uitvoeren zonder installeren (npx cachet het pakket)
curl -s https://api.github.com/users/torvalds | npx fx

# Basis interactief gebruik
fx api-response.json
curl -s https://api.github.com/repos/jqlang/jq | fx

# In fx: pijltoetsen navigeren, Enter klapt uit/in, / zoekt
# Onderste balk accepteert JavaScript-expressies voor live filteren:
#   .name           β†’ toon alleen het "name"-veld
#   .repos.slice(0,5) β†’ eerste 5 repos
Bash
# fx werkt ook als niet-interactieve formatter (zoals jq . maar met JS-syntaxis)
# Geef een JavaScript-expressie als argument β€” geen interactieve modus
echo '{"users":[{"id":1,"name":"Sarah Chen"},{"id":2,"name":"Marcus Osei"}]}' \
  | fx '.users[0].name'
# Sarah Chen

# Ketting met map voor array-transformaties
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'

Veelgemaakte fouten

Deze vier fouten komen steeds opnieuw voor wanneer ontwikkelaars terminal JSON-viewers beginnen te gebruiken β€” elke heeft een duidelijke oplossing zodra je begrijpt waarom het gebeurt.

❌ jq . gebruiken om grote responses te bekijken (uitvoer scrollt buiten beeld)

Probleem: jq . dumpt alle uitvoer in één keer naar stdout. Voor responses langer dan de terminalhoogte verdwijnt alles boven het laatste scherm β€” je kunt niet terug scrollen naar het begin of naar een specifiek veld navigeren.

Oplossing: Pipe naar jless voor interactieve navigatie, of gebruik jq -C . | less -R als terugval. Beide houden het volledige document toegankelijk ongeacht de grootte.

Before Β· Bash
After Β· Bash
# 300-regels API-response β€” bovenste 280 regels scrollen direct weg
curl -s https://api.github.com/users/torvalds | jq .
# Alleen het onderste deel van de uitvoer is zichtbaar β€” kan niet terug
# Volledig document toegankelijk in jless β€” niets gaat verloren
curl -s https://api.github.com/users/torvalds | jless
# j/k om te scrollen, h/l om in/uit te klappen, / om te zoeken
❌ JQ_COLORS instellen met het verkeerde aantal segmenten

Probleem: JQ_COLORS vereist exact zeven door dubbele punten gescheiden waarden. Als de string zes of acht waarden heeft, negeert jq de hele variabele stilzwijgend en valt terug op de ingebouwde standaardwaarden β€” geen waarschuwing, geen fout, alleen de verkeerde kleuren.

Oplossing: Tel de dubbele punten: een geldige JQ_COLORS-string heeft exact zes dubbele punten en zeven waarden. Echo de variabele en pipe naar tr om te tellen.

Before Β· Bash
After Β· Bash
# Slechts 6 waarden β€” jq gebruikt stilzwijgend standaarden, geen indicatie waarom
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq .  # kleuren ongewijzigd β€” geen fout getoond
# Exact 7 waarden β€” 6 dubbele punten
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"

# Verifieer het aantal voordat je het toevoegt aan het shell-profiel
echo "$JQ_COLORS" | tr -cd ':' | wc -c   # moet 6 weergeven
❌ Uitvoer van jless of fx pipen naar een ander commando

Probleem: jless en fx renderen hun interactieve interface naar de terminal (een TTY), niet naar stdout. Ze pipen naar grep, tee of elk ander commando produceert verminkte ANSI escape-codes of lege uitvoer β€” de interactieve uitvoer van de viewer is niet ontworpen om door andere programma's te worden verwerkt.

Oplossing: Gebruik jq met een expliciete filter voor programmatische data-extractie. Gebruik jless en fx alleen als de laatste stap in een pipeline wanneer een mens de uitvoer leest.

Before Β· Bash
After Β· Bash
# jless-uitvoer is voor menselijke ogen β€” pipen produceert rommel
jless response.json | grep "request_id"
# Uitvoer: ANSI escape-codes en cursor-sequences, geen schone tekst
# Gebruik jq voor programmatische extractie β€” schoon, composeerbaar
jq -r '.request_id' response.json | grep "req_"

# Gebruik jless alleen als eindpunt in de terminal β€” niets daarna
jless response.json
❌ jq -C gebruiken zonder less -R (kleurcodes worden als letterlijke tekst afgedrukt)

Probleem: -C forceert ANSI-kleurcodes in de uitvoerstroom. Wanneer die stroom direct naar een terminal wordt afgedrukt die niet in raw-modus is β€” of naar een tool die ANSI niet interpreteert β€” verschijnen de escape-sequences als letterlijke tekens zoals ^[[1;34m die de uitvoer verpesten.

Oplossing: Combineer jq -C altijd met less -R. De -R vlag zet less in raw-input modus, waardoor het ANSI-sequences rendert als kleuren in plaats van ze als tekst af te drukken.

Before Β· Bash
After Β· Bash
# -C zonder -R: escape-sequences worden als ruwe tekst afgedrukt
jq -C . response.json | less
# Uitvoer: ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C met -R: ANSI-codes worden als echte kleuren gerenderd
jq -C . response.json | less -R
# Uitvoer: gekleurd JSON, schoon en leesbaar

jless vs jq vs bat vs fx β€” Vergelijking interactieve viewers

Alle vier tools renderen gekleurd JSON, maar hun interactieve mogelijkheden verschillen aanzienlijk. Kies op basis van of je inklapbare navigatie, zoeken of muisondersteuning nodig hebt β€” en of Node.js al in je omgeving aanwezig is.

Tool
Interactieve navigatie
Zoeken
Inklapbaar
Kleur
Grote bestanden
Installatie
jless
βœ… vim-toetsen
βœ… (/, n, N)
βœ… (h/l toetsen)
βœ… (ingebouwd)
βœ… (streaming)
brew / binary
jq -C | less -R
⚠️ (alleen less)
βœ… (/ in less)
❌
βœ… (ANSI)
⚠️ (buffert alles)
alleen jq
fx
βœ… pijltoetsen
βœ… (/)
βœ…
βœ…
⚠️ (JS-laden)
npm install -g fx
bat
⚠️ (alleen pager)
❌ (in bat)
❌
βœ… (thema)
⚠️ (leest alles)
brew / apt
jq . (plain)
❌ (scrollt weg)
❌
❌
βœ… (alleen tty)
❌
brew / apt

Voor de meeste situaties: installeer jless één keer en gebruik het als standaard interactieve viewer. Houd jq -C . | less -R als terugval voor omgevingen waar je geen extra binaries kunt installeren. Voeg fx toe als je team primair Node.js gebruikt en muisnavigatie of live JavaScript-filtering waardeert.

Veelgestelde vragen

Hoe zoek ik naar een specifieke sleutel in een JSON-bestand in de terminal?

Druk in jless op / om een incrementele zoekprompt te openen, typ de sleutelnaam en druk op Enter. Gebruik n om naar de volgende treffer te springen en N voor de vorige. Zoeken is standaard hoofdlettergevoelig. In jq -C | less -R activeert / de ingebouwde zoekfunctie van less, die overeenkomt met ruwe tekst inclusief ANSI-kleurcodes β€” het zoeken in jless is betrouwbaarder voor gestructureerd JSON.

Bash
# Open bestand in jless, druk daarna op / om te zoeken
jless api-response.json
# In jless: typ /  β†’  "request_id"  β†’  Enter  β†’  n voor volgende treffer

# jq-alternatief: extraheer en druk alle overeenkomende sleutels af
jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json

Hoe navigeer ik door een diep geneste JSON-structuur met sneltoetsen?

jless volgt vim-navigatie: j/k voor omhoog/omlaag, h om een node in te klappen, l om te expanderen. Druk H om de huidige node en alle siblings tegelijk in te klappen β€” handig voor een overzicht op hoog niveau voordat je in een specifieke tak duikt. L klapt alles recursief uit. Nadat je alles hebt ingeklapt naar het hoogste niveau, klap je alleen het pad dat je wilt uit met l.

Bash
# Open de response in jless
curl -s https://api.github.com/repos/jqlang/jq | jless
# In jless:
#   H            β†’ klap alle sleutels op het hoogste niveau in
#   j/k          β†’ navigeer naar de gewenste sleutel
#   l            β†’ klap alleen die tak uit
#   gg           β†’ terug naar root
#   G            β†’ spring naar laatste element

Hoe maak ik de kleuruitvoer van jq beter leesbaar op een donker terminal?

Stel de omgevingsvariabele JQ_COLORS in met ANSI attribute;color codes voor elk JSON-type. De zeven posities zijn in volgorde: null, false, true, getallen, strings, arrays, objecten. Zet de export in ~/.bashrc of ~/.zshrc om het op elk jq-aanroep toe te passen. Vetgedrukte heldere kleuren werken het best op donkere achtergronden.

Bash
# Hoog-contrast thema voor donkere terminals β€” voeg toe aan ~/.bashrc of ~/.zshrc
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=grijs, false=helderblauw, true=heldergroen,
# numbers=heldergeel, strings=groen, arrays/objects=heldercyaan

# Test direct zonder shell te herladen
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .

Wat is het verschil tussen jless en jq . voor het bekijken van JSON?

jq . scrolt de uitvoer voorbij de bovenkant van de terminal en geeft geen manier om terug te navigeren β€” handig voor kleine responses, maar onpraktisch voor alles boven de 50 regels. jless rendert het volledige document in een interactieve pager waar je kunt scrollen, zoeken, nodes inklappen en navigeren met sneltoetsen zonder context te verliezen. Gebruik jq . voor een snel blik op kleine payloads; gebruik jless wanneer je wilt verkennen.

Bash
# Kleine payload β€” jq . is prima
echo '{"status":"ok","version":"2.4.1"}' | jq .

# Grote of geneste response β€” jless is beter
curl -s https://api.github.com/repos/jqlang/jq | jless
# β†’ interactieve boom, niets scrollt buiten beeld

Hoe bekijk ik JSON van een curl-response interactief in de terminal?

Pipe curl direct naar jless. Gebruik altijd -s (silent) om te voorkomen dat de voortgangsbalk van curl in de uitvoer verschijnt. jless opent de interactieve viewer met de volledige response als inklapbare boom. Als jless niet geΓ―nstalleerd is, geeft jq -C . | less -R een gekleurde pager als terugvaloptie.

Bash
# Interactieve verkenning met jless
curl -s https://api.github.com/users/torvalds | jless

# Gekleurde pager als terugval (geen inklappen, maar wel scrollbaar met kleur)
curl -s https://api.github.com/users/torvalds | jq -C . | less -R

Kan ik meerdere JSON-bestanden naast elkaar bekijken in de terminal?

jless opent één bestand tegelijk. Voor vergelijking naast elkaar gebruik je een terminal-multiplexer: tmux split-window -h opent een verticale splitsing, voer dan jless uit in elk venster met een ander bestand. Als alternatief gebruik je de browser-gebaseerde JSON Diff-tool voor structurele vergelijking van twee documenten.

Bash
# tmux naast elkaar: horizontaal splitsen, dan jless in elk venster
tmux split-window -h
# Linkervenster:  jless response-v1.json
# Rechtervenster: jless response-v2.json

# Of diff op jq-genormaliseerde uitvoer voor tekstuele vergelijking
diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)

Gerelateerde tools

De JSON Pretty Print tool geeft je dezelfde inklapbare, gekleurde weergave als jless β€” direct in de browser, zonder installatie en zonder terminal.

CM
Cora MatsumotoPlatform Engineer

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.

NO
Nadia OkonkwoTechnisch beoordelaar

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.