Bash JSON Viewer — jless & JQ_COLORS Guide

·Platform Engineer·Geprüft vonNadia Okonkwo·Veröffentlicht

Nutze das kostenlose JSON Pretty Print direkt im Browser – keine Installation erforderlich.

JSON Pretty Print online testen →

Wenn du einen bash JSON Viewer zur interaktiven Erkundung statt zum Scripting benötigst, stößt das Standard-Pipe jq . an seine Grenzen — die Ausgabe scrollt über den Terminalanfang hinaus, und bei einer 300-zeiligen API-Antwort gibt es keine Möglichkeit, zurückzunavigieren. Dieser Leitfaden behandelt Tools, die speziell zum interaktiven Anzeigen von JSON im Terminal entwickelt wurden: jless (einklappbarer Baum mit vim-Tastaturnavigation), JQ_COLORS für benutzerdefinierte Farbthemen, jq -C | less -R für farbiges Paging, Shell-Aliase für den täglichen Einsatz, und fx als Node.js-Alternative. Für Scripting, CI/CD und Validierungsworkflows, siehe den begleitenden Leitfaden JSON in Bash formatieren. Für einen installationsfreien Browser-Viewer funktioniert das JSON Pretty Print Tool sofort. Die Beispiele wurden unter Bash 5.x (macOS via Homebrew, Ubuntu 22.04+) getestet und sind mit Bash 3.2+ (macOS-System-Shell) kompatibel.

WICHTIGE PUNKTE
  • jless — der beste interaktive JSON Viewer für das Terminal: einklappbarer Baum, vim-Tasten, inkrementelle Suche
  • jq -C . | less -R — farbiger, scrollbarer Pager ohne zusätzliche Installation über jq hinaus
  • JQ_COLORS — Umgebungsvariable, die das ANSI-Farbschema von jq für jeden JSON-Typ anpasst
  • fx — interaktiver JSON Viewer in Node.js mit Mausunterstützung und JavaScript-Filterausdrücken
  • alias jv='jless' — ein einziges Wort macht interaktives Anzeigen zur Muskelgedächtnis-Gewohnheit

Interaktive vs. Skriptbasierte JSON-Anzeige

JSON an jq . zu pipen ist die richtige Wahl, wenn du formatierte Ausgabe für einen kleinen Payload möchtest oder wenn das Ergebnis in einen anderen Befehl fließt. Es ist die falsche Wahl, wenn du eine API-Antwort mit 200 Feldern erkunden musst — die Ausgabe fliegt am Terminalfenster vorbei und lässt dir keine Möglichkeit zu navigieren, Abschnitte einzuklappen oder nach einem bestimmten Feld zu suchen, ohne den Befehl mit einem Filter erneut auszuführen. Interaktive JSON Viewer rendern dieselbe formatierte, farbige Ausgabe in einem persistenten Pager, wo du die Navigation steuerst. Die Daten sind identisch; der Unterschied liegt in der Oberfläche.

Before · Bash
After · Bash
# jq . — Ausgabe scrollt bei großen Antworten vom Bildschirm
curl -s https://api.github.com/users/torvalds | jq .
# Über 300 Zeilen scrollen vorbei — Kontext geht sofort verloren
# jless — öffnet einen interaktiven Pager, nichts scrollt vom Bildschirm
curl -s https://api.github.com/users/torvalds | jless
# Gesamtes Dokument sichtbar, einklappbar, durchsuchbar mit j/k/h/l
Hinweis:Interaktive Viewer sind ausschließlich für die menschliche Inspektion — sie sollten niemals in Skripten, CI-Pipelines oder Automatisierungen erscheinen. Für die programmatische JSON-Verarbeitung verwende jq mit expliziten Filtern und Exit-Code-Behandlung. Der Leitfaden JSON in Bash formatieren behandelt diese Scripting-Muster.

jless — Interaktiver JSON Viewer

jless ist ein eigens für diesen Zweck entwickelter Terminal-JSON-Viewer. Anders als ein einfaches jq-Pipe rendert er das Dokument als persistenten einklappbaren Baum: Jedes Objekt und Array kann unabhängig mit l und h aus- oder eingeklappt werden, die Navigation verwendet vim-Tasten, und die inkrementelle Suche findet jeden Schlüssel oder Wert sofort. Eingabe wird inkrementell gestreamt, sodass große Dateien und API-Antworten unabhängig von der Größe in unter einer Sekunde geöffnet werden — während jq das gesamte Dokument puffert, bevor es etwas anzeigt. Ich greife instinktiv auf jless zurück, sobald eine API-Antwort zu groß ist, um sie auf einen Blick zu erfassen.

Installation

Bash
# macOS
brew install jless

# Linux — vorkompiliertes Binary von 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/

# Überprüfen
jless --version

Grundlegende Verwendung

Bash
# Lokale Datei öffnen — interaktiver Baum-Viewer startet sofort
jless api-response.json

# Beliebigen JSON-Stream direkt in jless pipen
curl -s https://api.github.com/users/torvalds | jless

# Mit allen auf oberster Ebene eingeklappten Knoten öffnen (nützlicher Startpunkt für große Dokumente)
jless --mode line api-response.json

# Bestimmtes Array-Element laden und isoliert anzeigen
jq '.[0]' deployments.json | jless

Navigation und Suche in der Praxis

Bash
# Innerhalb von jless:
#
#   j / ↓        nach unten
#   k / ↑        nach oben
#   l / →        Knoten ausklappen (oder Enter)
#   h / ←        Knoten einklappen
#   H            aktuellen + alle Geschwister einklappen → Überblick auf hoher Ebene
#   L            alles rekursiv ausklappen
#
#   /            Vorwärtssuche starten — Schlüsselnamen tippen und Enter drücken
#   n / N        nächster / vorheriger Suchtreffer
#
#   g / gg       zum Anfang springen
#   G            zum Ende springen
#   q            beenden

jless Tastenkürzel-Referenz

Alle Kürzel sind unmittelbar nach dem Öffnen von jless verfügbar — keine Konfiguration erforderlich. Das Navigationsmodell ist absichtlich identisch mit vim, damit vorhandenes Muskelgedächtnis übertragbar ist.

Taste
Aktion
Wann verwenden
j / ↓
Cursor eine Zeile nach unten bewegen
Durch Objektschlüssel oder Array-Elemente scrollen
k / ↑
Cursor eine Zeile nach oben bewegen
Zu einem vorherigen Feld zurückkehren
J
5 Zeilen nach unten
Schnelleres Scrollen durch lange Arrays
K
5 Zeilen nach oben
Schnellere Aufwärtsnavigation
h / ← / -
Aktuellen Knoten einklappen
Großes verschachteltes Objekt ausblenden, um Rauschen zu reduzieren
l / → / +
Aktuellen Knoten ausklappen
Eingeklapptes Objekt oder Array öffnen
H
Aktuellen Knoten und alle Geschwister einklappen
Überblick über die Struktur auf hoher Ebene erhalten
L
Alle Knoten rekursiv ausklappen
Gesamte Tiefe einer verschachtelten Struktur sichtbar machen
g
Zum Anfang des Dokuments springen
Schnell zur Wurzel zurückkehren
G
Zum Ende des Dokuments springen
Zum letzten Element eines großen Arrays springen
/
Vorwärtssuche starten
Einen bestimmten Schlüssel oder Wert im Dokument finden
?
Rückwärtssuche starten
Von der aktuellen Position aufwärts suchen
n
Zum nächsten Suchtreffer springen
Alle Vorkommen eines Suchbegriffs durchgehen
N
Zum vorherigen Suchtreffer springen
Rückwärts durch Suchergebnisse navigieren
q
jless beenden
Beenden nach abgeschlossener Inspektion

jq -C | less -R — Farbiges Paging Ohne Zusatz-Tools

Wenn jless nicht installiert ist und du eine scrollbare, farbige Ansicht einer JSON-Antwort benötigst, ist jq -C . | less -R ein leistungsfähiger Fallback. Das Flag -C erzwingt ANSI-Farbcodes auch wenn stdout ein Pipe ist (normalerweise entfernt jq sie), und -R weist less an, diese Codes zu rendern statt sie als Klartext auszugeben. Das Ergebnis ist ein vollständig farbiges, scrollbares Dokument — ohne die interaktive Baumstruktur von jless. Die Navigation in less erfolgt über Pfeiltasten oder vim-Tasten j/k, und / löst die integrierte Textsuche von less aus.

Bash
# Einfacher farbiger Pager
jq -C . response.json | less -R

# Aus einer curl-Antwort — -s verhindert, dass der Fortschrittsbalken den JSON-Stream korrumpiert
curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R

# Schlüssel für einfachere visuelle Überprüfung sortieren, dann pagen
jq -CS . config.json | less -R
# -C = Farbe erzwingen, -S = Schlüssel sortieren (beide Flags kombiniert)

# Alias hinzufügen, damit das vollständige Pipe nie mehr getippt werden muss
alias jqv='jq -C . | less -R'
# Verwendung: cat response.json | jqv
#         o.: curl -s https://api.example.com/status | jqv
Hinweis:jq -C | less -R puffert die gesamte formatierte Ausgabe, bevor less sie anzeigen kann. Bei einer 200-MB-Datei bedeutet das mehrere Sekunden Wartezeit und erheblichen Speicherverbrauch — dieselbe Einschränkung wie bei einfachem jq .. Für große Dateien verwende stattdessen jless, das inkrementell streamt.

JQ_COLORS — Benutzerdefinierte Farbthemen

JQ_COLORS ist eine Umgebungsvariable, die das Standard-ANSI-Farbschema von jq überschreibt. Sie nimmt eine durch Doppelpunkte getrennte Zeichenkette mit sieben ANSI-Attribut;Farb-Codes, einen pro JSON-Typ in dieser festen Reihenfolge: null : false : true : Zahlen : Strings : Arrays : Objekte. Jeder Code hat das Format Attribut;Farbe, wobei das Attribut 0 (normal), 1 (fett), 2 (gedimmt) oder 4 (unterstrichen) ist, und die Farbe eine Standard-ANSI-Farbnummer ist (30–37 = Standard, 90–97 = hell).

Bash
# ANSI-Farbreferenz für JQ_COLORS:
#   Attribute:  0=normal  1=fett  2=gedimmt  4=unterstrichen
#   Farben:     30=schwarz  31=rot  32=grün  33=gelb
#               34=blau   35=magenta  36=cyan  37=weiß
#   Hell:       90=hellschwarz  91=hellrot  92=hellgrün  93=hellgelb
#               94=hellblau  95=hellmagenta  96=hellcyan  97=hellweiß
#
# Reihenfolge: null : false : true : Zahlen : Strings : Arrays : Objekte

# Hochkontrast-Theme für dunkle Terminals (empfohlen)
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=gedimmtes-grau, false=hellrot, true=hellgrün,
# Zahlen=hellgelb, Strings=grün, Arrays=fettes-cyan, Objekte=fettes-cyan

# Solarized-ähnliches Theme
export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34"
# null=gedimmtes-weiß, false=magenta, true=magenta,
# Zahlen=cyan, Strings=gelb, Arrays=fettes-blau, Objekte=fettes-blau

# Minimal (nur fette Schlüssel, alles andere schlicht)
export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
Bash
# Gewähltes Theme zu ~/.bashrc oder ~/.zshrc hinzufügen, damit es bei jedem jq-Aufruf gilt
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc

# Theme testen
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .
Warnung:JQ_COLORS muss genau sieben durch Doppelpunkte getrennte Werte haben. Wenn die Zeichenkette weniger Segmente hat, fällt jq stillschweigend auf seine eingebauten Standardwerte zurück ohne jede Fehlermeldung — was eine Fehlkonfiguration schwer zu diagnostizieren macht. Teste immer eine neue Farbzeichenkette auf einem kurzen JSON-Payload, bevor du sie in dein Shell-Profil aufnimmst.

Shell-Aliase für die Tägliche JSON-Anzeige

Die Befehle für die interaktive JSON-Anzeige sind standardmäßig ausführlich. Ein kleines Set von Aliasen in ~/.bashrc oder ~/.zshrc macht jless und farbiges Paging zu Ein-Wort-Befehlen, die sich natürlich in jeden Workflow integrieren. Die folgenden Aliase lassen sich kombinieren — jv und jvp akzeptieren beide gepipte Eingabe oder einen Dateinamen als erstes Argument.

Bash
# Zu ~/.bashrc oder ~/.zshrc hinzufügen

# jv — interaktiver Viewer (jless falls verfügbar, farbiger Pager als Fallback)
jv() {
  if command -v jless &>/dev/null; then
    jless "$@"
  else
    jq -C . "$@" | less -R
  fi
}

# jvp — mit alphabetisch sortierten Schlüsseln anzeigen (nützlich zum Vergleichen von Antworten)
alias jvp='jq -CS . | less -R'

# jvc — aus der Zwischenablage anzeigen (macOS)
alias jvc='pbpaste | jless'

# jvf — anzeigen und filtern: jvf '.users[0]' response.json
jvf() {
  local filter="$1"; shift
  jq -C "$filter" "$@" | less -R
}

# Neu laden ohne Terminal neu zu starten
source ~/.bashrc
Bash
# Verwendungsbeispiele nach dem Hinzufügen der obigen Aliase

# Beliebige Datei oder gepipte Antwort anzeigen
jv deployment-config.json
curl -s https://api.github.com/users/torvalds | jv

# Sortiert anzeigen (einfach alphabetisch zu durchsuchen)
cat feature-flags.json | jvp

# Interaktiv in ein Teildokument eintauchen
jvf '.database' infra/app-config.json
jvf '.users[] | select(.role == "admin")' users.json

bat — Syntaxhervorgehobene JSON-Dateiansicht

bat ist ein Ersatz für cat mit Syntaxhervorhebung, Zeilennummern und einem eingebauten Pager. Für JSON-Dateien auf der Festplatte bietet es eine saubere, editorähnliche Leseerfahrung ohne einen vollständigen Texteditor zu öffnen. Anders als jless rendert bat die Datei als statischen Text — kein Einklappen, keine Suche, keine Navigation außer Scrollen. Seine Stärke liegt in der visuellen Klarheit für mittelgroße statische Dateien (Configs, Fixtures, Test-Payloads), wo du Syntaxfarben und Zeilennummern möchtest, aber keine interaktive Baumnavigation benötigst.

Bash
# macOS
brew install bat

# Debian / Ubuntu (Binary könnte batcat heißen)
apt-get install -y bat
# alias bat=batcat   # zu ~/.bashrc hinzufügen falls nötig unter Ubuntu

# JSON-Datei mit Syntaxhervorhebung und Zeilennummern anzeigen
bat config/feature-flags.json

# Pager deaktivieren — direkt ins Terminal ausgeben (nützlich in Skripten)
bat --paging=never api-response.json

# Mit jq kombinieren: mit jq formatieren, mit bat anzeigen (bewahrt bats JSON-Hervorhebung)
jq '.' response.json | bat --language=json --paging=never
Hinweis:Verwende bat zum Lesen statischer Konfigurationsdateien und Test-Fixtures, wo Zeilennummern wichtig sind (z.B. wenn ein Testfehler auf Zeile 47 einer Fixture-Datei verweist). Für API-Antworten und dynamisches JSON von curl ist jless schneller zu öffnen und praktischer zu navigieren. Wenn du im Browser anzeigen und mit einem Kollegen teilen musst, füge direkt in das JSON Pretty Print Tool ein — kein Terminal erforderlich.

fx — Interaktiver JSON-Explorer in Node.js

fx ist ein interaktiver JSON Viewer auf Basis von Node.js. Seine Oberfläche ähnelt jless — einklappbarer Baum, Tastaturnavigation, Suche — bietet aber zwei Features, die jless fehlen: Mausunterstützung (Klicken zum Aus-/Einklappen von Knoten) und die Möglichkeit, einen JavaScript-Ausdruck in der unteren Leiste einzugeben, um das Dokument in Echtzeit zu filtern. Für Teams, die bereits Node.js nutzen, ist fx eine natürliche Wahl und benötigt kein separates Binary. Für reine Terminal-Umgebungen ohne Node ist jless die schlankere Wahl.

Bash
# Global via npm installieren
npm install -g fx

# Oder ohne Installation ausführen (npx cached das Paket)
curl -s https://api.github.com/users/torvalds | npx fx

# Grundlegende interaktive Verwendung
fx api-response.json
curl -s https://api.github.com/repos/jqlang/jq | fx

# In fx: Pfeiltasten navigieren, Enter klappt aus/ein, / sucht
# Untere Leiste akzeptiert JavaScript-Ausdrücke für Live-Filterung:
#   .name           → nur das "name"-Feld anzeigen
#   .repos.slice(0,5) → erste 5 Repos
Bash
# fx funktioniert auch als nicht-interaktiver Formatter (wie jq . aber mit JS-Syntax)
# JavaScript-Ausdruck als Argument übergeben — kein interaktiver Modus
echo '{"users":[{"id":1,"name":"Lukas Bauer"},{"id":2,"name":"Sophie Müller"}]}' \
  | fx '.users[0].name'
# Lukas Bauer

# Mit map für Array-Transformationen verketten
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'

Häufige Fehler

Diese vier Fehler tauchen immer wieder auf, wenn Entwickler zum ersten Mal Terminal-JSON-Viewer verwenden — jeder hat eine klare Lösung, sobald man versteht, warum er auftritt.

jq . zum Anzeigen großer Antworten verwenden (Ausgabe scrollt vom Bildschirm)

Problem: jq . gibt die gesamte Ausgabe auf einmal auf stdout aus. Bei Antworten, die länger als die Terminalhöhe sind, ist alles oberhalb des letzten Bildschirms weg — du kannst nicht zum Anfang zurücknavigieren oder zu einem bestimmten Feld scrollen, ohne den Befehl mit einem Filter erneut auszuführen.

Lösung: Pipe an jless für interaktive Navigation oder verwende jq -C . | less -R als Fallback. Beide halten das vollständige Dokument unabhängig von seiner Größe zugänglich.

Before · Bash
After · Bash
# 300-zeilige API-Antwort — die oberen 280 Zeilen scrollen sofort weg
curl -s https://api.github.com/users/torvalds | jq .
# Nur der untere Teil der Ausgabe ist sichtbar — kein Zurücknavigieren möglich
# Gesamtes Dokument bleibt in jless zugänglich — nichts geht verloren
curl -s https://api.github.com/users/torvalds | jless
# j/k zum Scrollen, h/l zum Ein-/Ausklappen, / zum Suchen
JQ_COLORS mit falscher Anzahl von Segmenten setzen

Problem: JQ_COLORS benötigt genau sieben durch Doppelpunkte getrennte Werte. Wenn die Zeichenkette sechs oder acht Werte hat, ignoriert jq die gesamte Variable stillschweigend und fällt auf seine kompilierten Standardwerte zurück — keine Warnung, kein Fehler, einfach die falschen Farben.

Lösung: Zähle die Doppelpunkte: eine gültige JQ_COLORS-Zeichenkette hat genau sechs Doppelpunkte und sieben Werte. Echo die Variable und pipe an tr zum Zählen.

Before · Bash
After · Bash
# Nur 6 Werte — jq verwendet stillschweigend Standardwerte, keine Angabe warum
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq .  # Farben unverändert — kein Fehler angezeigt
# Genau 7 Werte — 6 Doppelpunkte
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"

# Anzahl überprüfen vor dem Hinzufügen zum Shell-Profil
echo "$JQ_COLORS" | tr -cd ':' | wc -c   # muss 6 ausgeben
Ausgabe von jless oder fx in einen anderen Befehl pipen

Problem: jless und fx rendern ihre interaktive Oberfläche ins Terminal (ein TTY), nicht auf stdout. Sie an grep, tee oder andere Befehle zu pipen erzeugt unlesbare ANSI-Escape-Codes oder leere Ausgabe — die interaktive Ausgabe des Viewers ist nicht dafür gedacht, von anderen Programmen konsumiert zu werden.

Lösung: Verwende jq mit einem expliziten Filter, um Daten programmatisch zu extrahieren. Verwende jless und fx nur als letzten Schritt in einer Pipeline, wenn ein Mensch die Ausgabe liest.

Before · Bash
After · Bash
# jless-Ausgabe ist für menschliche Augen — Pipen erzeugt Müll
jless response.json | grep "request_id"
# Ausgabe: ANSI-Escape-Codes und Cursor-Sequenzen, kein sauberer Text
# jq für programmatische Extraktion verwenden — sauber und komponierbar
jq -r '.request_id' response.json | grep "req_"

# jless nur als Terminal-Endpunkt verwenden — nichts danach
jless response.json
jq -C ohne less -R verwenden (Farbcodes werden als Klartext ausgegeben)

Problem: -C erzwingt ANSI-Farbcodes im Ausgabestream. Wenn dieser Stream direkt in einem Terminal ausgegeben wird, das nicht im Raw-Modus ist — oder an ein Tool gepipet wird, das ANSI nicht interpretiert — erscheinen die Escape-Sequenzen als Literalzeichen wie ^[[1;34m, die die Ausgabe verunreinigen.

Lösung: Kombiniere jq -C immer mit less -R. Das Flag -R versetzt less in den Raw-Input-Modus und weist es an, ANSI-Sequenzen als Farben zu rendern statt sie als Text auszugeben.

Before · Bash
After · Bash
# -C ohne -R: Escape-Sequenzen werden als Rohtext ausgegeben
jq -C . response.json | less
# Ausgabe: ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C mit -R: ANSI-Codes werden als echte Farben gerendert
jq -C . response.json | less -R
# Ausgabe: farbiges JSON, sauber und lesbar

jless vs jq vs bat vs fx — Vergleich Interaktiver Viewer

Alle vier Tools rendern farbiges JSON, aber ihre interaktiven Fähigkeiten unterscheiden sich erheblich. Wähle basierend darauf, ob du einklappbare Navigation, Suche oder Mausunterstützung benötigst — und ob Node.js bereits in deiner Umgebung vorhanden ist.

Tool
Interaktive Nav.
Suche
Einklappbar
Farbe
Große Dateien
Installation
jless
✅ vim-Tasten
✅ (/, n, N)
✅ (h/l-Tasten)
✅ (eingebaut)
✅ (Streaming)
brew / Binary
jq -C | less -R
⚠️ (nur less)
✅ (/ in less)
✅ (ANSI)
⚠️ (alles puffern)
nur jq
fx
✅ Pfeiltasten
✅ (/)
⚠️ (JS-Load)
npm install -g fx
bat
⚠️ (nur Pager)
❌ (in bat)
✅ (Theme)
⚠️ (alles lesen)
brew / apt
jq . (einfach)
❌ (scrollt weg)
✅ (nur tty)
brew / apt

In den meisten Fällen: Installiere jless einmal und nutze es als Standard-Interaktiv-Viewer. Behalte jq -C . | less -R als Fallback für Umgebungen, in denen du keine zusätzlichen Binaries installieren kannst. Füge fx hinzu, wenn dein Team primär Node.js-basiert ist und Mausnavigation oder Live-JavaScript-Filterung schätzt.

Häufig Gestellte Fragen

Wie suche ich in einer JSON-Datei im Terminal nach einem bestimmten Schlüssel?

In jless drücke / um den inkrementellen Suchprompt zu öffnen, tippe den Schlüsselnamen und drücke Enter. Verwende n, um vorwärts durch Treffer zu springen, und N, um rückwärts zu gehen. Die Suche unterscheidet standardmäßig Groß- und Kleinschreibung. Bei jq -C | less -R löst / die integrierte Suche von less aus, die rohen Text inklusive ANSI-Farbcodes abgleicht — die jless-Suche ist für strukturiertes JSON zuverlässiger.

Bash
# Datei in jless öffnen, dann / zum Suchen drücken
jless api-response.json
# In jless: tippe /  →  "request_id"  →  Enter  →  n für nächsten Treffer

# jq-Alternative: alle passenden Schlüssel auf stdout extrahieren und ausgeben
jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json

Wie navigiere ich mit Tastaturkürzeln durch eine tief verschachtelte JSON-Struktur?

jless spiegelt die vim-Navigation: j/k für hoch/runter, h zum Einklappen eines Knotens, l zum Ausklappen. Drücke H, um den aktuellen Knoten und alle Geschwister auf einmal einzuklappen — nützlich für einen Überblick auf hoher Ebene, bevor man in einen bestimmten Zweig eintaucht. L klappt alles rekursiv aus. Wenn alles auf die oberste Ebene eingeklappt ist, klappe mit l nur den gewünschten Pfad aus.

Bash
# Antwort in jless öffnen
curl -s https://api.github.com/repos/jqlang/jq | jless
# In jless:
#   H            → alle Schlüssel der obersten Ebene einklappen
#   j/k          → zum gewünschten Schlüssel navigieren
#   l            → nur diesen Zweig ausklappen
#   gg           → zur Wurzel zurückkehren
#   G            → zum letzten Element springen

Wie mache ich die farbige Ausgabe von jq auf einem dunklen Terminal besser lesbar?

Setze die Umgebungsvariable JQ_COLORS mit ANSI-Attribut;Farb-Codes für jeden JSON-Typ. Die sieben Positionen sind in dieser Reihenfolge: null, false, true, Zahlen, Strings, Arrays, Objekte. Füge den Export in ~/.bashrc oder ~/.zshrc ein, damit er bei jedem jq-Aufruf gilt. Helle, fette Farben funktionieren am besten auf dunklem Hintergrund.

Bash
# Hochkontrast-Theme für dunkle Terminals — in ~/.bashrc oder ~/.zshrc einfügen
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=grau, false=hellrot, true=hellgrün,
# Zahlen=hellgelb, Strings=grün, Arrays/Objekte=hellcyan

# Sofort testen ohne Shell neu zu laden
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .

Was ist der Unterschied zwischen jless und jq . zum Anzeigen von JSON?

jq . scrollt die Ausgabe über den Terminalanfang hinaus und bietet keine Möglichkeit, zurückzunavigieren — nützlich für kleine Antworten, aber unpraktisch für alles über 50 Zeilen. jless rendert das gesamte Dokument in einem interaktiven Pager, wo man scrollen, suchen, Knoten einklappen und mit Tastaturkürzeln navigieren kann, ohne den Kontext zu verlieren. Verwende jq . für einen schnellen Blick auf einen kleinen Payload; verwende jless, wenn du erkunden musst.

Bash
# Kleiner Payload — jq . ist in Ordnung
echo '{"status":"ok","version":"2.4.1"}' | jq .

# Große oder verschachtelte Antwort — jless ist besser
curl -s https://api.github.com/repos/jqlang/jq | jless
# → interaktiver Baum, keine Ausgabe scrollt vom Bildschirm

Wie zeige ich JSON aus einer curl-Antwort interaktiv im Terminal an?

Leite curl direkt in jless. Füge immer -s (silent) hinzu, damit der Fortschrittsbalken von curl nicht in der Ausgabe erscheint. jless öffnet den interaktiven Viewer mit der vollständigen Antwort als einklappbaren Baum. Falls jless nicht installiert ist, bietet jq -C . | less -R einen farbigen Pager als Fallback.

Bash
# Interaktive Erkundung mit jless
curl -s https://api.github.com/users/torvalds | jless

# Farbiger Pager als Fallback (kein Einklappen, aber scrollbar mit Farbe)
curl -s https://api.github.com/users/torvalds | jq -C . | less -R

Kann ich mehrere JSON-Dateien nebeneinander im Terminal anzeigen?

jless öffnet jeweils eine Datei. Für den Seitenvergleich verwende einen Terminal-Multiplexer: tmux split-window -h öffnet einen vertikalen Split, dann starte jless in jedem Pane mit einer anderen Datei. Alternativ kannst du das browserbasierte JSON Diff Tool nutzen, wenn du zwei Dokumente strukturell vergleichen möchtest.

Bash
# tmux nebeneinander: horizontal teilen, dann jless in jedem Pane starten
tmux split-window -h
# Linkes Pane:  jless response-v1.json
# Rechtes Pane: jless response-v2.json

# Oder diff auf jq-normalisierter Ausgabe für einen Text-Diff verwenden
diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)

Verwandte Tools

Das JSON Pretty Print Tool bietet dir dieselbe einklappbare, farbige Ansicht wie jless — direkt im Browser, ohne Installation und ohne 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 OkonkwoTechnischer Prüfer

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.