JSON vs JSONL: Was ist der Unterschied?
Eine vollständige Anleitung zum Verständnis der JSON- und JSONL (JSON Lines)-Formate, ihrer Unterschiede und wann jedes verwendet werden sollte.
Letzte Aktualisierung: Februar 2026
Schnellvergleich
| Eigenschaft | JSON | JSONL (JSON Lines) |
|---|---|---|
| Struktur | Einzelnes Objekt oder Array | Ein JSON-Objekt pro Zeile |
| Dateierweiterung | .json | .jsonl oder .ndjson |
| Parsing | Muss gesamte Datei parsen | Kann zeilenweise parsen |
| Streaming | Schwierig | Native Unterstützung |
| Große Dateien | Speicherintensiv | Speichereffizient |
| Menschenlesbar | Mit Einrückung formatiert | Kompakt, ein Datensatz pro Zeile |
| Schema-Validierung | JSON Schema unterstützt | Zeilenweises JSON Schema |
| Daten anhängen | Gesamte Datei muss neu geschrieben werden | Einfach eine neue Zeile anhängen |
Was ist JSON?
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu parsen und zu generieren ist. Es basiert auf einer Teilmenge von JavaScript und hat sich zum De-facto-Standard für den Datenaustausch im Web entwickelt.
Eine JSON-Datei enthält einen einzelnen JSON-Wert — typischerweise ein Objekt oder ein Array. Die gesamte Datei muss als eine Einheit geparst werden, um auf Daten darin zuzugreifen.
[{"name": "Alice", "age": 30, "city": "New York"},{"name": "Bob", "age": 25, "city": "London"},{"name": "Charlie", "age": 35, "city": "Tokyo"}]
Was ist JSONL (JSON Lines)?
JSONL (JSON Lines), auch bekannt als Newline Delimited JSON (NDJSON), ist ein Textformat, bei dem jede Zeile ein gültiges JSON-Objekt ist. Zeilen werden durch Zeilenumbruchzeichen (\n) getrennt. Im Gegensatz zu Standard-JSON gibt es kein umschließendes Array oder Objekt um die Daten.
Jede Zeile in einer JSONL-Datei ist eigenständig und kann unabhängig geparst werden. Das macht JSONL ideal für Streaming-Daten, Protokolldateien und die Verarbeitung großer Datensätze, ohne alles in den Speicher laden zu müssen.
{"name": "Alice", "age": 30, "city": "New York"}{"name": "Bob", "age": 25, "city": "London"}{"name": "Charlie", "age": 35, "city": "Tokyo"}
Wesentliche Unterschiede zwischen JSON und JSONL
1. Dateiformat & Struktur
JSON umhüllt alle Daten in einem einzelnen Objekt oder Array. Die Datei muss syntaktisch als Ganzes gültig sein — eine fehlende Klammer am Ende macht die gesamte Datei ungültig.
JSONL speichert ein JSON-Objekt pro Zeile. Jede Zeile ist unabhängig — wenn eine Zeile einen Fehler hat, können die anderen Zeilen trotzdem geparst werden.
2. Parsing & Speichernutzung
JSON erfordert das Laden und Parsen der gesamten Datei auf einmal. Eine 1-GB-JSON-Datei würde ungefähr 1 GB+ Speicher zum Parsen benötigen.
JSONL kann zeilenweise gelesen und geparst werden (Streaming). Selbst eine 10-GB-JSONL-Datei kann mit minimalem Speicher verarbeitet werden, indem jeweils eine Zeile gelesen wird.
3. Streaming & Echtzeit-Daten
JSON ist nicht für Streaming konzipiert. Sie können nicht mit der Datenverarbeitung beginnen, bis die gesamte Datei oder Antwort empfangen und geparst wurde.
JSONL ist ideal für Streaming. Jede Zeile kann verarbeitet werden, sobald sie empfangen wird, perfekt für Echtzeit-Datenfeeds, Protokolle und Server-Sent Events.
4. Anhängen & Schreiben von Daten
Das Anhängen von Daten an ein JSON-Array erfordert das Lesen der gesamten Datei, das Parsen, das Hinzufügen des neuen Elements und das Neuschreiben der vollständigen Datei.
Das Anhängen an eine JSONL-Datei ist so einfach wie das Hinzufügen einer neuen Zeile am Ende. Keine Notwendigkeit, vorhandene Daten zu lesen oder zu ändern. Das ist O(1) vs. O(n) bei JSON.
5. Menschliche Lesbarkeit
JSON unterstützt Schöndruck mit Einrückung und ist dadurch sehr lesbar für Konfigurationsdateien und API-Antworten.
JSONL ist per Design kompakt — ein Datensatz pro Zeile. Es ist für maschinelle Verarbeitung optimiert, nicht für menschliches Lesen, obwohl einzelne Zeilen schön gedruckt werden können.
Wann JSON vs. JSONL verwenden
- Sie mit Konfigurationsdateien arbeiten
- Sie REST-API-Request/Response-Bodies erstellen
- Sie kleine, strukturierte Daten speichern (unter 10 MB)
- Daten menschenlesbar und bearbeitbar sein müssen
- Sie mit verschachtelten, hierarchischen Datenstrukturen arbeiten
- Browserseitiger Datenaustausch
- Sie große Datensätze verarbeiten (100 MB+)
- Sie Daten in Echtzeit streamen
- Sie Protokolldateien und Ereignisdaten schreiben
- Sie Machine-Learning-Modelle trainieren (OpenAI, Hugging Face)
- ETL-Pipelines und Datenverarbeitung
- Sie häufig Daten anhängen
- Sie Daten mit Unix-Tools verarbeiten (grep, awk, sed)
Häufige Anwendungsfälle
Machine Learning & KI
JSONLJSONL ist das Standardformat für ML-Trainingsdaten. OpenAI verwendet JSONL für Fine-Tuning-Datensätze, und viele ML-Frameworks erwarten JSONL-Eingabe. Jede Zeile repräsentiert ein Trainingsbeispiel.
Anwendungsprotokollierung
JSONLServerprotokolle, Anwendungsereignisse und Audit-Trails sind natürlich für JSONL geeignet. Jedes Ereignis wird als einzelne Zeile geschrieben, was das Anhängen, Suchen mit grep und Verarbeiten mit Streaming-Tools erleichtert.
Web-APIs & Konfiguration
JSONREST-APIs verwenden typischerweise JSON für Request- und Response-Bodies. Konfigurationsdateien (.json) verwenden JSON für lesbare, strukturierte Einstellungen mit verschachtelten Objekten.
Big Data & Analyse
JSONLDatenpipelines, ETL-Prozesse und Analysetools verwenden JSONL zur Verarbeitung großer Datenmengen. Jeder Datensatz kann unabhängig verarbeitet werden, was parallele Verarbeitung und MapReduce-Muster ermöglicht.
Code-Beispiele
// Reading JSON - must load entire fileconst data = JSON.parse(fs.readFileSync('data.json', 'utf8'));// Access datadata.forEach(item => {console.log(item.name);});
// Reading JSONL - stream line by lineimport { createReadStream } from 'fs';import { createInterface } from 'readline';const rl = createInterface({input: createReadStream('data.jsonl')});for await (const line of rl) {const item = JSON.parse(line);console.log(item.name);}
// JSON array to JSONLconst jsonArray = JSON.parse(fs.readFileSync('data.json', 'utf8'));const jsonl = jsonArray.map(item => JSON.stringify(item)).join('\n');fs.writeFileSync('data.jsonl', jsonl);
// JSONL to JSON arrayconst lines = fs.readFileSync('data.jsonl', 'utf8').split('\n').filter(line => line.trim());const jsonArray = lines.map(line => JSON.parse(line));fs.writeFileSync('data.json', JSON.stringify(jsonArray, null, 2));
JSON & JSONL online konvertieren
Verwenden Sie unsere kostenlosen Online-Tools, um sofort zwischen JSON und JSONL zu konvertieren — keine Installation erforderlich.