JSON Lines (JSONL) ⇔ JSON-Array Konverter
Konvertiert zwischen dem JSON-Lines-Format (ein JSON-Objekt pro Zeile) und einem regulären JSON-Array. Praktisch zum Prüfen von Machine-Learning-Datensätzen und Log-Ausgaben.
Tipps zur Nutzung
- JSON Lines (JSONL) ist ein Format, bei dem pro Zeile ein eigenständiges JSON-Objekt steht. Es wird u. a. standardmäßig in Fine-Tuning-Datensätzen von OpenAI sowie in der Log-Ausgabe von Elasticsearch/Logstash verwendet.
- Im Modus „JSONL → JSON-Array" muss jede Zeile ein einzeln interpretierbares JSON-Objekt sein. Leere Zeilen werden automatisch übersprungen.
- Im Modus „JSON-Array → JSONL" muss die gesamte Eingabe ein einziges JSON-Array (`[ ... ]`) sein. Jedes Element des Arrays wird als eine Zeile JSONL ausgegeben.
- Wird eine große Log-Datei von JSONL in ein JSON-Array umgewandelt, lässt sie sich anschließend leichter mit dem Befehl `jq` oder dem Standard-JSON-Array-Parser der jeweiligen Programmiersprache weiterverarbeiten.
Häufig gestellte Fragen
Übrigens – Warum entstand das Format „ein Datensatz pro Zeile"?
Das JSON-Lines-Format (auch JSONL genannt) entstand, weil ein reguläres JSON-Array eine grundlegende Einschränkung hat: Es lässt sich kein einziger Datensatz abrufen, bevor nicht das gesamte Array in den Speicher geladen und vollständig geparst wurde. Wollte man Log-Daten oder Machine-Learning-Trainingsdatensätze mit mehreren Millionen Zeilen als ein einziges JSON-Array behandeln, musste die gesamte Datei in den Speicher geladen werden – bei sehr großen Dateien führte das zu Speicherengpässen und stark verlängerten Parse-Zeiten.
JSON Lines löst dieses Problem mit einer einfachen Regel: eine Zeile entspricht einem vollständigen JSON-Objekt. Da die Datei Zeile für Zeile gelesen und dabei sofort geparst werden kann, muss sie nicht komplett in den Speicher geladen werden – das macht das Format sehr gut geeignet für Streaming- und Parallelverarbeitung. Dieses Designprinzip passt außerdem gut zur traditionellen Unix-Kultur der zeilenweisen Textverarbeitung („ein Datensatz pro Zeile"; Befehle wie `grep`, `awk` und `sed` arbeiten zeilenweise) und lässt sich dadurch direkt in bestehende Kommandozeilen-Toolchains einbinden – ein erheblicher praktischer Vorteil.
Heute ist es als Verteilungsformat für Datensätze im Bereich KI und Machine Learning weit verbreitet, und es ist mittlerweile üblich, Trainingsdaten großer Sprachmodelle sowie Prompt-Antwort-Paare für Fine-Tuning im JSON-Lines-Format zu verteilen.