JSON-Ausgabeformate verstehen: Array, Keyed, Nested und JSON Lines (NDJSON)
Dieselben CSV-Daten lassen sich auf vier sehr unterschiedliche Arten als JSON ausgeben. Dieser Ratgeber erklärt Array, Keyed, Nested und JSON Lines (NDJSON), zeigt jedes Format an einem Beispiel und sagt klar, wann Sie welches brauchen.
Fachredaktion Datenformate · Aktualisiert: Juni 2026
Eine CSV in JSON umzuwandeln klingt nach einer einzigen, eindeutigen Operation. Tatsächlich gibt es aber mehrere gleichwertige JSON-Darstellungen derselben Tabelle, und welche die richtige ist, hängt vollständig davon ab, was am anderen Ende damit passiert. Wer die Daten in eine Web-Anwendung lädt, braucht ein anderes Format als jemand, der sie nach MongoDB importiert oder als Log-Strom verarbeitet. Dieser Artikel ordnet die vier wichtigsten Ausgabeformate ein: das klassische Array, das Keyed-Objekt, verschachteltes (nested) JSON und JSON Lines, besser bekannt als NDJSON.
Die Ausgangsdaten: eine flache CSV
Damit der Vergleich nachvollziehbar bleibt, nutzen alle folgenden Beispiele dieselbe kleine CSV-Tabelle mit drei Datensätzen. Die erste Zeile ist die Kopfzeile mit den Spaltennamen:
id,name,stadt,aktiv
1,Anna Köhler,Hamburg,true
2,Bjørn Maaß,Kiel,false
3,Cem Yıldız,Lübeck,true Aus dieser Tabelle entstehen je nach gewähltem Ausgabeformat vier strukturell verschiedene JSON-Dokumente. Inhaltlich sind sie identisch, technisch verhalten sie sich sehr unterschiedlich.
Die vier Formate auf einen Blick
Eine Tabelle als Eingabe, vier mögliche Ausgaben. Das folgende Diagramm zeigt, wie sich dieselbe CSV in die vier Zielformate verzweigt und wofür jedes typischerweise gedacht ist.
Format 1: Das klassische JSON-Array
Das Array ist die häufigste und intuitivste Form. Jede Datenzeile wird zu einem Objekt, alle Objekte werden in eine eckige Klammer eingeschlossen und durch Kommas getrennt. Die Kopfzeile liefert die Schlüsselnamen. Das Ergebnis ist ein einziges, gültiges JSON-Dokument.
[
{ "id": 1, "name": "Anna Köhler", "stadt": "Hamburg", "aktiv": true },
{ "id": 2, "name": "Bjørn Maaß", "stadt": "Kiel", "aktiv": false },
{ "id": 3, "name": "Cem Yıldız", "stadt": "Lübeck", "aktiv": true }
]
Dieses Format passt fast immer, wenn die Daten in eine Web-Anwendung, ein JavaScript-Frontend oder eine API gehen. Es lässt sich mit einem einzigen Aufruf (etwa JSON.parse oder json.loads) komplett einlesen und in eine Liste verwandeln. Der einzige Nachteil: Die gesamte Datei muss am Stück geparst werden, was bei sehr großen Mengen Speicher kostet.
Format 2: Das Keyed-Objekt
Statt einer Liste erzeugt das Keyed-Format ein einziges großes Objekt. Der Wert einer Schlüsselspalte, hier die id, wird zum Schlüssel des jeweiligen Datensatzes. So können Sie später direkt über die ID auf einen Eintrag zugreifen, ohne das ganze Array zu durchsuchen.
{
"1": { "name": "Anna Köhler", "stadt": "Hamburg", "aktiv": true },
"2": { "name": "Bjørn Maaß", "stadt": "Kiel", "aktiv": false },
"3": { "name": "Cem Yıldız", "stadt": "Lübeck", "aktiv": true }
}
Der direkte Zugriff per Schlüssel (daten["2"]) ist der große Vorteil. Die wichtigste Bedingung: Die Schlüsselspalte muss eindeutige Werte enthalten. Tauchen Werte doppelt auf, überschreibt der letzte Datensatz die vorherigen, und Daten gehen verloren. Für Nachschlagetabellen und Konfigurationen ist das Format ideal, für Datensätze ohne eindeutige ID ungeeignet.
Format 3: Verschachteltes (nested) JSON
Die wahre Stärke von JSON liegt in der Verschachtelung, und auch eine flache CSV lässt sich dorthin überführen. Der Trick ist die Punkt-Notation in den Spaltennamen. Eine Spalte adresse.stadt wird beim Konvertieren zu einem Schlüssel stadt innerhalb eines Unterobjekts adresse. Aus dieser CSV:
id,name,adresse.stadt,adresse.plz
1,Anna Köhler,Hamburg,20095 entsteht durch die Punkt-Notation diese verschachtelte Struktur:
{
"id": 1,
"name": "Anna Köhler",
"adresse": {
"stadt": "Hamburg",
"plz": "20095"
}
} Nested JSON ist genau dann die richtige Wahl, wenn das Zielsystem strukturierte Objekte erwartet, etwa eine API, die einen Kunden samt Adresse als ein zusammenhängendes Objekt verlangt. So lassen sich mehrere Spaltengruppen sauber in logische Untereinheiten gliedern, ohne die flache CSV-Quelle ändern zu müssen.
Tipp: Punkt-Notation gezielt nutzen
Sie steuern die Verschachtelung allein über die Kopfzeile Ihrer CSV. Benennen Sie zusammengehörige Spalten mit demselben Präfix und einem Punkt, etwa adresse.stadt, adresse.plz und adresse.land. Der Konverter gruppiert sie automatisch zu einem Unterobjekt adresse. Mehrere Punkte erzeugen mehrere Ebenen, zum Beispiel firma.adresse.stadt.
Format 4: JSON Lines (NDJSON)
JSON Lines, in der Praxis fast immer als NDJSON (Newline Delimited JSON) bezeichnet, bricht bewusst mit der Array-Logik. Hier ist jede Zeile ein eigenständiges, vollständiges JSON-Objekt. Es gibt keine umschließenden eckigen Klammern und keine Kommas zwischen den Objekten, getrennt wird allein durch den Zeilenumbruch:
{"id":1,"name":"Anna Köhler","stadt":"Hamburg","aktiv":true}
{"id":2,"name":"Bjørn Maaß","stadt":"Kiel","aktiv":false}
{"id":3,"name":"Cem Yıldız","stadt":"Lübeck","aktiv":true} Der entscheidende Vorteil: Ein Programm kann die Datei Zeile für Zeile lesen und verarbeiten, ohne sie komplett in den Speicher zu laden. Genau deshalb ist NDJSON das Standardformat für Datenströme, für Logdateien und für den massenhaften Datenbankimport. Fällt die Verarbeitung in Zeile 900.000 aus, sind die ersten 899.999 Datensätze trotzdem bereits sauber eingelesen, ein abgebrochenes Array wäre dagegen unbrauchbar.
Diese Werkzeuge erwarten oder bevorzugen NDJSON beim Laden von JSON-Daten:
- MongoDB:
mongoimportliest standardmäßig ein Objekt pro Zeile, ein Array nur mit--jsonArray. - Google BigQuery: Lädt JSON ausschließlich im zeilengetrennten Format (newline delimited JSON).
- Amazon Athena und viele Big-Data-Werkzeuge erwarten ebenfalls ein Objekt je Zeile.
- Log-Systeme wie der Elastic Stack verarbeiten Ereignisse zeilenweise als NDJSON.
Achtung: NDJSON ist kein gültiges JSON-Dokument
Versuchen Sie nicht, eine NDJSON-Datei mit einem normalen JSON-Parser am Stück einzulesen. Ein Standard-Parser erwartet ein einzelnes Dokument und scheitert an der zweiten Zeile, weil dort ein neues Objekt ohne trennendes Komma beginnt. NDJSON muss zeilenweise gelesen werden: pro Zeile ein Parse-Aufruf. Verwenden Sie zur Klarheit die Endung .ndjson oder .jsonl statt .json.
Direktvergleich: welches Format wofür?
| Format | Struktur | Ideal für | Schwäche |
|---|---|---|---|
| Array | Liste von Objekten in [ ] | Web-Apps, APIs, allgemeiner Gebrauch | Muss komplett geparst werden |
| Keyed | Ein Objekt, ID als Schlüssel | Direkter Zugriff per ID, Nachschlagen | Braucht eindeutige Schlüssel |
| Nested | Objekte in Objekten (Punkt-Notation) | Hierarchische APIs, gruppierte Felder | Erfordert vorbereitete Header |
| JSON Lines (NDJSON) | Ein Objekt pro Zeile, ohne Klammern | MongoDB, BigQuery, Streaming, Logs | Kein gültiges Einzeldokument |
Datentypen: warum sie bei jedem Format zählen
Unabhängig vom gewählten Ausgabeformat stellt sich immer dieselbe Frage: Sollen 42 und true als echte JSON-Zahl und echter Wahrheitswert ausgegeben werden, oder als Zeichenketten? In CSV ist alles Text, JSON unterscheidet dagegen zwischen Zahlen, Wahrheitswerten, null und Strings. Eine automatische Typ-Erkennung wandelt erkennbare Zahlen und true/false in die passenden JSON-Typen um. Das ist meist erwünscht, kann aber stören, etwa bei Postleitzahlen oder Artikelnummern mit führenden Nullen, die als Zahl ihre Null verlieren würden. Ein guter Konverter bietet deshalb eine Option, alle Werte als String zu behalten.
Sehr große Dateien: NDJSON als Speicherspar-Trick
Je größer die Datenmenge, desto klarer spielt NDJSON seine Stärke aus. Ein Array zwingt jeden Leser, das gesamte Dokument im Arbeitsspeicher zu halten, bevor er überhaupt mit der Verarbeitung beginnen kann. Bei mehreren hundert Megabyte kann das einen Browser oder ein Skript in die Knie zwingen. NDJSON erlaubt dagegen das sogenannte Streaming: Zeile lesen, Objekt parsen, verarbeiten, nächste Zeile. Der Speicherbedarf bleibt konstant, egal ob die Datei tausend oder zehn Millionen Zeilen hat. Wer regelmäßig mit großen Exporten arbeitet, sollte NDJSON daher zur Standardwahl machen.
Häufig gestellte Fragen
Was ist JSON Lines (NDJSON)?
JSON Lines, oft als NDJSON (Newline Delimited JSON) bezeichnet, ist ein Textformat, bei dem jede Zeile ein eigenständiges, vollständiges JSON-Objekt ist. Die Objekte werden nicht in ein Array eingeschlossen und nicht durch Kommas getrennt, sondern allein durch einen Zeilenumbruch. Das macht das Format ideal für das zeilenweise Verarbeiten großer Datenmengen und für Streaming.
Was ist der Unterschied zwischen einem JSON-Array und JSON Lines?
Ein JSON-Array fasst alle Objekte in eckige Klammern und trennt sie mit Kommas, es ist also ein einziges großes JSON-Dokument. JSON Lines verzichtet auf Klammern und Kommas: jede Zeile steht für sich. Ein Array muss komplett geladen und am Stück geparst werden, NDJSON kann dagegen Zeile für Zeile gelesen werden, ohne dass die ganze Datei im Speicher liegen muss.
Welches Format brauche ich für den Import in MongoDB?
Das Werkzeug mongoimport erwartet standardmäßig JSON Lines (NDJSON), also ein Objekt pro Zeile. Ein klassisches JSON-Array funktioniert nur mit dem zusätzlichen Schalter --jsonArray. Auch Google BigQuery und Amazon Athena verlangen beim Laden von JSON das zeilengetrennte Format. Für diese Ziele wählen Sie daher die NDJSON-Ausgabe.
Was ist verschachteltes (nested) JSON und wie entsteht es aus einer CSV?
Nested JSON enthält Objekte innerhalb von Objekten, etwa eine Adresse als Unterobjekt eines Kunden. Aus einer flachen CSV entsteht das über Punkt-Notation in den Spaltennamen: Eine Spalte adresse.stadt wird beim Konvertieren zu einem Schlüssel stadt innerhalb eines Objekts adresse. So lassen sich flache Tabellen in strukturierte JSON-Hierarchien überführen.
Was bedeutet das Keyed-Format und wann ist es nützlich?
Beim Keyed-Format wird nicht ein Array erzeugt, sondern ein einziges großes Objekt, in dem der Wert einer bestimmten Spalte (etwa eine ID) als Schlüssel für jeden Datensatz dient. Das ist nützlich, wenn Sie später direkt über die ID auf einen Datensatz zugreifen wollen, ohne das ganze Array zu durchsuchen. Voraussetzung ist, dass die Schlüsselspalte eindeutige Werte enthält.
Hat NDJSON die Dateiendung .json oder .ndjson?
Üblich sind die Endungen .ndjson und .jsonl. Auch .json wird in der Praxis verwendet, kann aber irreführend sein, weil viele Parser darunter ein einzelnes JSON-Dokument erwarten und an den Zeilenumbrüchen ohne umschließendes Array scheitern. Wer Verwechslungen vermeiden will, nutzt .ndjson oder .jsonl.
Alle vier Formate direkt ausprobieren
CSV einfügen, Trennzeichen wählen und zwischen Array, Keyed, Nested und NDJSON umschalten. Komplett im Browser, ohne Upload und ohne Anmeldung.
Zum CSV zu JSON ConverterQuellen und Standards
- jsonlines.org: JSON Lines, Spezifikation des zeilengetrennten Formats
- IETF: RFC 8259, The JavaScript Object Notation (JSON) Data Interchange Format
- IETF: RFC 4180, Common Format and MIME Type for CSV Files
- MongoDB: mongoimport, JSON-Import (Objekt pro Zeile)
- Google Cloud: BigQuery, Laden von newline delimited JSON
- MDN Web Docs: Das JSON-Objekt in JavaScript