JSONL-Tutorial: JSONL-Dateien erstellen, lesen & konvertieren
Ein Schritt-für-Schritt-Tutorial mit allem, was Sie über die Arbeit mit JSONL (JSON Lines)-Dateien wissen müssen. Enthält Code-Beispiele in Python, JavaScript und CLI-Tools.
Zuletzt aktualisiert: Februar 2026
Was ist JSONL?
JSONL (JSON Lines) ist ein leichtgewichtiges Textformat, bei dem jede Zeile ein separater, gültiger JSON-Wert ist. Im Gegensatz zu Standard-JSON, das alle Daten in einem einzelnen Array oder Objekt umschließt, speichert JSONL einen Datensatz pro Zeile, getrennt durch Zeilenumbruchzeichen (\n).
Diese zeilenweise Struktur macht JSONL ideal für das Streaming großer Datensätze, das Anhängen von Datensätzen ohne Umschreiben der Datei und das parallele Verarbeiten von Daten. Es wird weit verbreitet von OpenAI für Fine-Tuning-Datensätze, von Logging-Systemen wie dem ELK-Stack und von Big-Data-Tools wie BigQuery und Apache Spark verwendet.
{"id":1,"name":"Alice","role":"engineer"}{"id":2,"name":"Bob","role":"designer"}{"id":3,"name":"Charlie","role":"manager"}
So erstellen Sie JSONL-Dateien
Das Erstellen einer JSONL-Datei ist einfach: Serialisieren Sie jeden Datensatz als einzeilige JSON-Zeichenfolge und schreiben Sie sie gefolgt von einem Zeilenumbruch. Hier sind Beispiele in den beliebtesten Sprachen.
import jsonrecords = [{"id": 1, "name": "Alice", "role": "engineer"},{"id": 2, "name": "Bob", "role": "designer"},{"id": 3, "name": "Charlie", "role": "manager"},]with open("output.jsonl", "w", encoding="utf-8") as f:for record in records:f.write(json.dumps(record, ensure_ascii=False) + "\n")print("Created output.jsonl with", len(records), "records")
import { writeFileSync } from 'fs';const records = [{ id: 1, name: 'Alice', role: 'engineer' },{ id: 2, name: 'Bob', role: 'designer' },{ id: 3, name: 'Charlie', role: 'manager' },];const jsonl = records.map(record => JSON.stringify(record)).join('\n');writeFileSync('output.jsonl', jsonl + '\n', 'utf-8');console.log(`Created output.jsonl with ${records.length} records`);
Manuell / Texteditor
Sie können JSONL-Dateien auch in jedem Texteditor erstellen. Tippen Sie einfach ein gültiges JSON-Objekt pro Zeile ohne Kommas zwischen den Zeilen, und speichern Sie die Datei mit der .jsonl-Erweiterung. Stellen Sie sicher, dass jede Zeile vollständig und gültiges JSON ist.
So lesen Sie JSONL-Dateien
Da jede Zeile ein unabhängiger JSON-Wert ist, ist das Lesen von JSONL-Dateien so einfach wie das Iterieren über Zeilen. Hier sind die gängigsten Ansätze.
import jsonwith open("data.jsonl", "r", encoding="utf-8") as f:for line_number, line in enumerate(f, 1):line = line.strip()if not line:continue # skip empty linesrecord = json.loads(line)print(f"Line {line_number}: {record['name']} - {record['role']}")
import { createReadStream } from 'fs';import { createInterface } from 'readline';const rl = createInterface({input: createReadStream('data.jsonl', 'utf-8'),});let lineNumber = 0;for await (const line of rl) {if (!line.trim()) continue; // skip empty lineslineNumber++;const record = JSON.parse(line);console.log(`Line ${lineNumber}: ${record.name} - ${record.role}`);}
# Erste 10 Zeilen anzeigenhead -n 10 data.jsonl# Gesamtzahl der Datensätze zählenwc -l data.jsonl# Jede Zeile mit jq schön druckencat data.jsonl | jq .# Datensätze filtern, wo role "engineer" istcat data.jsonl | jq 'select(.role == "engineer")'# Nur das Name-Feld extrahierencat data.jsonl | jq -r '.name'# Nach Zeilen suchen, die ein Schlüsselwort enthaltengrep '"Alice"' data.jsonl
So konvertieren Sie JSON in JSONL
Wenn Sie ein Standard-JSON-Array haben, bedeutet die Konvertierung in JSONL, dass jedes Element als separate Zeile geschrieben wird. Dies ist eine der häufigsten JSONL-Operationen.
import json# JSON-Array lesenwith open("data.json", "r", encoding="utf-8") as f:data = json.load(f) # expects a JSON array# Als JSONL schreibenwith open("data.jsonl", "w", encoding="utf-8") as f:for record in data:f.write(json.dumps(record, ensure_ascii=False) + "\n")print(f"Converted {len(data)} records from JSON to JSONL")
import { readFileSync, writeFileSync } from 'fs';// JSON-Array lesenconst data = JSON.parse(readFileSync('data.json', 'utf-8'));// Als JSONL schreibenconst jsonl = data.map(record => JSON.stringify(record)).join('\n');writeFileSync('data.jsonl', jsonl + '\n', 'utf-8');console.log(`Converted ${data.length} records from JSON to JSONL`);
So konvertieren Sie CSV in JSONL
Die Konvertierung von CSV in JSONL bildet jede Zeile auf ein JSON-Objekt ab, wobei der CSV-Header als Feldnamen verwendet wird. Dies ist nützlich, wenn tabellarische Daten in ein Format migriert werden, das für Streaming oder Machine Learning geeignet ist.
import csvimport jsonwith open("data.csv", "r", encoding="utf-8") as csv_file:reader = csv.DictReader(csv_file)with open("data.jsonl", "w", encoding="utf-8") as jsonl_file:for row in reader:jsonl_file.write(json.dumps(row, ensure_ascii=False) + "\n")print("Converted CSV to JSONL successfully")
import { readFileSync, writeFileSync } from 'fs';const csv = readFileSync('data.csv', 'utf-8');const lines = csv.trim().split('\n');const headers = lines[0].split(',');const jsonl = lines.slice(1).map(line => {const values = line.split(',');const obj = {'};headers.forEach((h, i) => obj[h.trim()] = values[i]?.trim());return JSON.stringify(obj);}).join('\n');writeFileSync('data.jsonl', jsonl + '\n', 'utf-8');console.log('Converted CSV to JSONL successfully');
JSONL-Best-Practices
Verwenden Sie UTF-8-Kodierung für alle JSONL-Dateien. Dies gewährleistet Kompatibilität über Plattformen hinweg und unterstützt internationale Zeichen.
Schreiben Sie genau ein JSON-Objekt pro Zeile. Teilen Sie niemals ein JSON-Objekt über mehrere Zeilen auf oder setzen Sie mehrere Objekte in dieselbe Zeile.
Fügen Sie keine Kommas zwischen Zeilen hinzu. Im Gegensatz zu JSON-Arrays verwendet JSONL Zeilenumbruchzeichen als einziges Trennzeichen.
Validieren Sie jede Zeile unabhängig. Jede Zeile muss ein vollständiger, gültiger JSON-Wert sein. Verwenden Sie einen JSONL-Validator, um Syntaxfehler frühzeitig zu erkennen.
Verwenden Sie Streaming-Lesevorgänge für große Dateien. Anstatt die gesamte Datei in den Speicher zu laden, verarbeiten Sie sie zeilenweise mit readline (Node.js) oder Datei-Iteration (Python).
Halten Sie Datensätze in ihrer Struktur konsistent. Während JSONL unterschiedliche Schemata pro Zeile erlaubt, macht eine einheitliche Struktur die Datenverarbeitung viel einfacher.
Vermeiden Sie nachgestellte Leerzeichen. Stellen Sie sicher, dass Zeilen keine zusätzlichen Leerzeichen oder Tabs haben, die Parsing-Probleme verursachen könnten.
Beenden Sie die Datei mit einem Zeilenumbruch. Ein abschließender Zeilenumbruch nach dem letzten Datensatz hilft Tools wie wc und cat, die Datei korrekt zu verarbeiten.
Häufige JSONL-Fehler
[
{"name":"Alice"},
{"name":"Bob"}
]{"name":"Alice"}
{"name":"Bob"}JSONL ist kein JSON-Array. Umschließen Sie Zeilen nicht in eckigen Klammern und fügen Sie keine Kommas zwischen ihnen hinzu. Jede Zeile steht für sich.
{"name":"Alice"},
{"name":"Bob"},{"name":"Alice"}
{"name":"Bob"}Nachgestellte Kommas nach jeder Zeile oder Kommas zwischen Zeilen sind in JSONL ungültig. Das Zeilenumbruchzeichen ist das einzige Trennzeichen.
{
"name": "Alice",
"age": 30
}{"name":"Alice","age":30}Jedes JSON-Objekt muss in eine einzelne Zeile passen. Schön formatiertes JSON mit Einrückung und Zeilenumbrüchen ist kein gültiges JSONL.
{"text":"She said "hello""}{"text":"She said \"hello\""}Anführungszeichen und Sonderzeichen innerhalb von JSON-Strings müssen ordnungsgemäß mit Backslashes maskiert werden. Nicht maskierte Anführungszeichen brechen den JSON-Parser.