JSON-Werkzeuge

jq playgroundVom Filter zum brauchbaren Shell-Befehl

Echtes jq für JSON und Text: Eingabemodus wählen, stdout prüfen und das Programm anschließend im eigenen Skript verwenden.

jq playground

JSON / Texteingabe

jq-Programm

Ergebnis

Vorschau in Blöcken zu 5.000 Zeichen. Kopie und Download enthalten das ganze Ergebnis.

Eingabe und Programm bleiben im Browser-Speicher; es wird kein Verlauf gespeichert.

Erlaubt: -c -r -j -S -a -e, kombinierte Kurzoptionen und lange Aliase. -s/-R/-n über den Eingabemodus wählen.

jq 1.8.2 · lokales WebAssembly · manuelle Ausführung

Ergebnis veraltet; Kopie und Download sind gesperrt.

Nur für POSIX-Shells. Eingabe zuerst als input.json speichern; der kopierte Befehl enthält keine Eingabedaten.

Im jq playground lässt sich eine API-Antwort auf die benötigten Felder reduzieren. Probieren Sie Bedingungen mit select aus, formen Sie Objekte mit map um und behalten Sie die ursprünglichen Daten zum Vergleich.

Wer JSON filtern oder JSON transformieren möchte, muss die Ausgabeform beachten. Ein jq Filter kann mehrere Werte, ein einziges Array oder gar nichts erzeugen. Diese Unterschiede bleiben hier erhalten.

Warum den jq playground verwenden?

Einzelne Ergebnisse bleiben einzeln

Mit .people[] | select(.age >= 18) | .name entsteht pro erwachsener Person eine Zeichenkette. Die Ausgabe behält diese einzelnen Werte und ihre Zeilenumbrüche bei. So sehen Sie, was ein nachgeschalteter Prozess erhält.

Drei Datensätze durchlaufen einen Filter; zwei passende Datensätze erscheinen als getrennte Ergebnisse.

Eingaben bewusst sammeln

Der jq playground führt -s vor Ihrem Programm aus: Alle JSON-Eingaben werden zu einem Array gesammelt. Eckige Klammern um einen Filter sammeln dagegen dessen Ergebnisse für die jeweils aktuelle Eingabe.

Drei einzelne JSON-Objekte werden gemeinsam in einem Array aufgenommen.

Zuerst festlegen, wie jq die Eingabe liest

01

JSON-Werte und Text unterscheiden

Der JSON-Modus liest aufeinanderfolgende Werte. Slurp sammelt sie in einem Array, Raw liest Text zeilenweise und Raw mit Slurp als eine gesamte Zeichenkette. Null startet mit null; input und inputs können trotzdem die bereitgestellten Daten lesen.

02

Ersetzungen prüfen und ausdrücklich starten

Datei, Beispiel und Leeren zeigen zuerst eine Vorschau. Anwenden ersetzt die dort gezeigten Inhalte und Einstellungen; einmaliges Rückgängigmachen stellt auch das vorige Ergebnis wieder her. Starten Sie per Schaltfläche oder Strg/Cmd+Enter. Nach Änderungen ist erst ein neuer Lauf exportierbar.

03

Exitcode vor dem Export beachten

Jeder Exitcode wird angezeigt. Bei einem Wert ungleich null bleibt der Export gesperrt, auch wenn -e nur false, null oder keine Ausgabe meldet. Entfernen Sie gegebenenfalls -e und starten Sie erneut. Für den POSIX-Befehl speichern Sie dieselbe Eingabe als input.json.

Auswählen, umformen und Ausgaben prüfen

Auswahl und Mapping

select lässt passende Datensätze passieren, map erzeugt ein Array umgeformter Elemente. Das Beispiel vergleicht numerische Alterswerte und erstellt Objekte mit einem booleschen adult-Feld. Eine Zeichenkette aus Ziffern bleibt ein anderer JSON-Typ.

Die Programmiersprache jq verwenden

Die WASM-Engine jq 1.8.2 unterstützt Pipes, reduce, def, Rekursion, try/catch und reguläre Ausdrücke. Sie führt echte jq-Programme aus. Dateimodule und zusätzliche CLI-Dateiargumente stehen hier nicht zur Verfügung.

Textausgabe gezielt einstellen

-r gibt Zeichenketten ohne JSON-Anführungszeichen aus, -j entfernt Ausgabetrenner, -c erzeugt kompaktes JSON, -S sortiert Schlüssel und -a verwendet ASCII-Escapes. Kurze Optionen lassen sich kombinieren; ihre langen Entsprechungen werden ebenfalls akzeptiert. Andere Flags werden abgelehnt.

stdout unverändert, Diagnose getrennt

Leerraum, ein führendes BOM und NUL-Zeichen bleiben im exportierten Text erhalten. Meldungen von debug und stderr erscheinen separat. Die Vorschau wächst in Schritten von 5.000 Zeichen; ein freigegebener Export enthält das vollständige Ergebnis.

Was die Engine verarbeitet und wo sie stoppt

Grenzen für Eingabe und Laufzeit
Eingabe und Dateien dürfen höchstens 500.000 UTF-8-Bytes umfassen, Programme 8.000 Bytes. Das Optionsfeld ist auf 256 Zeichen begrenzt. Zum Laden bleiben 15 Sekunden, danach 3 Sekunden zur Ausführung. Stoppen beendet den Worker.
Speicher und Ausgabe sind begrenzt
Der lineare WASM-Speicher ist auf 256 MiB begrenzt; das ist keine Grenze für den gesamten Browserspeicher. stdout und stderr zusammen dürfen 2 MiB nicht überschreiten. Zeit-, Stack-, Speicher- oder Ausgabefehler liefern kein exportierbares Teilergebnis.
Zahlen und doppelte Schlüssel folgen jq
Die Daten werden vor jq nicht durch einen JavaScript-JSON-Parser geschickt. Unveränderte große Zahlenliterale können ihre Dezimalschreibweise behalten; Rechnen mit Gleitkommazahlen kann runden. Bei doppelten Schlüsseln gilt das Verhalten von jq: Der letzte Wert bleibt. Exakte Kennungen besser als Zeichenketten behandeln.
Ein Exitcode beschreibt keinen Datentyp
Mit -e ergibt false/null normalerweise Code 1, eine fehlende Ausgabe Code 4. halt_error kann dieselben Codes verwenden. Daher sperrt jeder Exitcode ungleich null sämtliche Exporte. stdout und Diagnosen bleiben zur Prüfung sichtbar, können aber unvollständig sein.
Beschränkte Arbeitsumgebung
Es gibt keinen --arg-Editor, --stream, --seq, Modulimport, Dateisystemzugriff, URL-Abruf oder Freigabelink mit Daten. Kopierte Befehle verwenden POSIX-Quoting, keine PowerShell- oder cmd-Syntax. Umgebungsabhängige jq-Funktionen sehen die WASM-Umgebung.

Fragen zum jq playground

Wie filtere ich mit jq ein Array aus JSON-Objekten?

Für das Beispiel passt .people[] | select(.age >= 18) | .name. [] liefert einzelne Datensätze, select behält Treffer und .name holt das gewünschte Feld. Umschließen Sie den ganzen Filter mit eckigen Klammern, wenn Sie ein Array benötigen.

Wie entferne ich doppelte Anführungszeichen aus der jq-Ausgabe für die JSON-Verarbeitung in Bash?

Tragen Sie -r bei den Ausgabeoptionen ein. Damit entfallen JSON-Anführungszeichen bei Zeichenketten, deren innere Leerzeichen jedoch erhalten bleiben. Objekte und Arrays erscheinen weiterhin als JSON. -j entfernt zusätzlich die Trenner zwischen Ausgaben.

Wie gebe ich die Ergebnisse von select in jq als Array aus?

Schreiben Sie [.people[] | select(.age >= 18)]. Die Klammern sammeln alle Ergebnisse des eingeschlossenen Filters. Gibt es keinen Treffer, entsteht [] anstelle eines leeren Ausgabestroms. Das kann für den nächsten Befehl entscheidend sein.

Wie fasse ich mehrere JSON-Objekte zu einem Array zusammen?

Wählen Sie den Sammelmodus (-s) und führen Sie . aus, um das Array zu sehen. Wenn die Eingaben selbst Arrays sind, verbindet -s mit add diese Arrays. Das Zusammenführen von Objekten ist eine andere Aufgabe; dabei müssen Sie doppelte Schlüssel bewusst behandeln.

Wie wandle ich key = value-Paare in JSON um?

Wählen Sie Textzeilen (-R). Für einfache Zeilen können Sie mit split("=") | {(.[0]): .[1]} beginnen und Leerzeichen an Schlüssel und Wert nach Bedarf entfernen. Enthält der Wert weitere Gleichheitszeichen, brauchen Sie eine andere Aufteilung. Konfigurationsformate haben unterschiedliche Escape-Regeln.

Verarbeitet das Werkzeug eine Abfrage falsch?

Mit einem kleinen Beispiel anfangen

Vergleichen Sie im jq playground das Beispiel mit mehreren Ergebnissen mit map und übernehmen Sie das geprüfte Programm in Ihr Skript.