csv-json.de
Formate 9 Min. Lesezeit

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.

Eike-Christian Ramcke
Eike-Christian Ramcke

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.

CSV-Tabelle 3 Zeilen, 4 Spalten Array Standard, Web-Apps Keyed Direkter Zugriff per ID Nested Hierarchien, APIs JSON Lines (NDJSON) MongoDB, BigQuery, Logs [ {…}, {…} ] { "1": {…} } { "a": { … } } {…} je Zeile
Eine Eingabe, vier Ausgaben: das Zielsystem bestimmt das richtige Format.

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: mongoimport liest 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 Converter

Quellen und Standards

Verwandte Artikel

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige