JSON im Terminal verarbeiten mit jq
APIs antworten mit JSON – und dann? Mit jq filterst, formatierst und transformierst du JSON direkt im Terminal, ganz ohne Wegwerf-Skript. Ich zeige dir die Handvoll jq-Ausdrücke, die ich beim Debuggen von APIs jeden Tag brauche.
Wenn ich eine API teste, kommt als Antwort meist ein Klumpen JSON zurück. Ihn im Terminal von Hand zu lesen, ist mühsam. jq ist ein kleines Kommandozeilen-Werkzeug, das JSON versteht – filtern, umformen, hübsch ausgeben, alles in einer Pipe. Installiert ist es schnell (apt install jq, brew install jq).
Hübsch ausgeben
Der einfachste Nutzen: JSON lesbar einrücken und einfärben.
curl -s https://api.example.com/user/1 | jq .. ist der „Identitäts-Filter" – er gibt alles zurück, aber formatiert. -s bei curl unterdrückt die Fortschrittsanzeige, damit nur das JSON in die Pipe geht.
Ein Feld herausziehen
curl -s https://api.example.com/user/1 | jq '.name'
# "Mia"
curl -s https://api.example.com/user/1 | jq -r '.name'
# Mia ← -r ("raw") entfernt die AnführungszeichenDas -r ist wichtig, wenn du den Wert weiterverarbeitest (z. B. in eine Variable steckst) – sonst schleppst du die JSON-Quotes mit.
Durch Arrays iterieren und Felder auswählen
Angenommen, die API liefert eine Liste von Objekten:
# nur die Namen aller Einträge
curl -s https://api.example.com/users | jq -r '.[].name'
# pro Eintrag ein schlankes Objekt bauen
curl -s https://api.example.com/users | jq '.[] | {name, aktiv: .active}'.[] packt das Array aus, | leitet jeden Eintrag an den nächsten Filter weiter – jq denkt in Pipes, genau wie die Shell.
Filtern mit select()
# nur aktive Nutzer, dann deren Namen
curl -s https://api.example.com/users | jq -r '.[] | select(.active == true) | .name'In eine Bash-Schleife übergeben
Praktisch, um pro Eintrag etwas auszuführen:
curl -s https://api.example.com/users \
| jq -r '.[].id' \
| while read -r id; do
echo "Verarbeite Nutzer $id"
doneMit diesen paar Ausdrücken – .feld, .[], select(), -r – deckst du 90 % des API-Debuggings im Terminal ab. Kein Copy-Paste in ein Online-Tool, keine Wegwerf-Skripte.
Wenn du eine App oder Website mit API-Anbindung planst, baue ich dir Backend und Schnittstellen sauber auf – meld dich über bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
getopts – Skript-Parameter, die sich wie richtige Befehle anfühlen
$1, $2, $3 funktioniert genau so lange, bis man einen Parameter weglassen will. Mit getopts bekommt dein Skript benannte Optionen, eine Hilfe und eine klare Fehlermeldung – in fünfzehn Zeilen.
Zwei Listen vergleichen mit comm – wer fehlt, wer ist neu, wer ist in beiden
Welche Dateien fehlen im Backup? Welche Kunden aus der alten Liste stehen nicht in der neuen? Für genau diese Fragen gibt es seit Unix-Urzeiten ein Werkzeug, das kaum jemand kennt – comm vergleicht zwei sortierte Listen und sagt dir in einer Zeile, was nur links, nur rechts oder in beiden steht.
Warum deine Zählvariable nach der Schleife wieder 0 ist – Prozess-Substitution in Bash
Ein Klassiker, der jeden einmal erwischt: Du zählst in einer while-Schleife hoch, und hinterher steht die Variable trotzdem auf 0. Schuld ist eine Subshell hinter der Pipe. Mit Prozess-Substitution behältst du das Ergebnis – und kannst nebenbei zwei Befehle direkt vergleichen.