JSON in NDJSON umwandeln

JSON kannst du hier kostenlos und ohne Konto in NDJSON umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Verlustfrei Es geht nichts verloren. NDJSON enthält genau das, was auch JSON enthielt.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Die oberste Ebene der Datei entscheidet über alles

Bevor irgendetwas anderes zählt: Steht am Anfang der Datei eine eckige Klammer, wird aus jedem Element eine eigene Zeile. Steht dort etwas anderes — eine geschweifte Klammer, eine Zahl, ein Text —, wird das gesamte Dokument zu genau einer Zeile, weil NDJSON als ein vollständiger JSON-Wert pro Zeile definiert ist und ein einzelnes Objekt eben ein Wert ist.

Beides ist kein Fehler, und das Werkzeug warnt nicht davor. Die Prüfung liegt bei einem selbst: erstes Zeichen der Datei ansehen. Eine eckige Klammer liefert die gewünschte Datei. Eine geschweifte Klammer liefert eine gültige, aber sehr lange einzelne Zeile — genau ein Datensatz, wo tausende erwartet wurden.

Das Umschlag-Problem, an dem die meisten hängen bleiben

Kaum eine API-Antwort ist ein blankes Array. Fast immer steckt es in einem Objekt mit einem einzigen Schlüssel — data, results, items —, dessen Wert das eigentliche Array ist. Bei den tabellarischen Zielen auf dieser Seite wird dieser Umschlag automatisch entfernt, weil eine Tabelle nirgendwo Platz dafür hat. Hier nicht, und genau diese Abweichung kostet Nutzern häufig eine Stunde.

Der Grund dafür ist, dass der Umschlag hier ein legitimer Datensatz sein könnte. NDJSON kann Objekte jeder Form aufnehmen, deshalb lässt sich nicht sicher unterscheiden, ob etwas ein wegwerfbarer Umschlag ist oder ein Datensatz, der zufällig eine Liste enthält — und zu raten würde still Daten kosten, wo die Vermutung falsch liegt. Die Lösung ist eine zehn Sekunden lange Handbewegung: Klammer und Schlüssel am Anfang entfernen, schließende Klammer am Ende ebenso, speichern, dann umwandeln.

Verschachtelung bleibt erhalten, anders als in einer Tabelle

Jedes andere Ziel für einen JSON-Export auf dieser Seite muss abflachen. Eine CSV-Datei, eine Tabellenkalkulation oder eine SQL-Einfügung hat keinen Platz für ein Objekt innerhalb eines Feldes, also werden Verschachtelungen zu Spaltennamen mit Punkten und Listen zu durchnummerierten Spalten.

NDJSON kennt dieses Problem nicht: Jede Zeile ist vollständiges JSON, also kommt eine Bestellung mit verschachtelter Kundenadresse und mehreren Positionen unverändert an. Wo das Ziel Bäume lesen kann — die meisten Ladeprozesse für Data-Warehouses und die meisten Log-Pipelines können das —, ist das die richtige Wahl gegenüber jeder abflachenden Umwandlung.

Was sich an den Bytes tatsächlich ändert

Jeder Datensatz wird kompakt geschrieben: keine Einrückung, keine Zeilenumbrüche innerhalb eines Datensatzes, eine Zeile ohne überflüssige Leerzeichen pro Element. War die Ausgangsdatei mit Einrückung formatiert, wird das Ergebnis merklich kleiner, obwohl nichts entfernt wurde — ein hübsch formatierter JSON-Export besteht oft mehr aus Leerraum als aus Daten.

Die Reihenfolge der Schlüssel innerhalb eines Datensatzes bleibt erhalten, und es wird nichts hinzugefügt oder entfernt. Fehlte ein Feld im Array bereits, fehlt es auch in der Zeile — NDJSON gleicht Datensätze nicht gegeneinander ab, wie es die tabellarischen Formate tun müssen, weil es keine gemeinsame Kopfzeile gibt, die aufgefüllt werden müsste.

Ein beschädigter Datensatz reißt nicht mehr alles mit

Ein Zeilenumbruch innerhalb eines Textwerts wird innerhalb des JSON maskiert, nicht buchstäblich geschrieben — nichts in den Daten kann also einen tatsächlichen Zeilenumbruch erzeugen. Das macht die Zeilengrenze zu einer echten Garantie: Die Zeilenanzahl entspricht der Anzahl der Datensätze, und ein Werkzeug, das Zeilen abschneidet, erzeugt gültige Teilstücke.

Das ändert auch, was eine defekte Datei kostet. Ein fehlerhaftes JSON-Array liefert gar nichts — der Parser scheitert, und es lässt sich nicht sagen, welcher Datensatz schuld war. Eine fehlerhafte Zeile in einer NDJSON-Datei kostet nur diese eine Zeile, und ein Werkzeug, das sie einliest, kann die Zeilennummer nennen.

Die Umwandlung selbst streamt nicht, und kann es auch nicht

Darin liegt eine gewisse Ironie. Der ganze Vorteil von NDJSON ist, dass eine verarbeitende Stelle nie die komplette Datei im Speicher halten muss — und genau das ist hier trotzdem nötig: Ein JSON-Array gilt erst als gültig, wenn seine schließende Klammer gelesen wurde, also muss das Dokument vollständig geparst werden, bevor die erste Zeile geschrieben werden kann.

Die praktische Grenze liegt deshalb beim Arbeitsspeicher des eigenen Geräts, nicht bei einer festen Größenstufe. Wer selbst die Daten erzeugt, löst das besser an der Quelle: den Export direkt als NDJSON schreiben lassen, was in den meisten Exportwerkzeugen eine kleine Änderung ist und das Einlesen der ganzen Datei vollständig überflüssig macht.

Welche Ladeprozesse diese Datei so annehmen

Ein großer Teil nimmt sie direkt: Ladejobs, die auf newline-delimited JSON zeigen, DuckDB in einer FROM-Klausel, oder ein Werkzeug, das Datensätze zeilenweise verarbeitet. Für deutsche Behörden- und Statistikdaten, wie sie über GovData oder die Statistischen Ämter veröffentlicht werden, ist genau das die übliche Form, in der ein Ladeprozess sie anschließend erwartet.

Eine kleinere Gruppe will ein Protokoll statt bloßer Datensätze. Bulk-Anfragen an Elasticsearch oder OpenSearch verlangen vor jedem Dokument eine Anweisungszeile, ein Rumpf hat also doppelt so viele Zeilen wie Datensätze — diese Ausgabe ist dafür das Rohmaterial, nicht die fertige Nutzlast. Erscheint in der Formatbeschreibung ein Wort wie action, ist genau diese zusätzliche Zeile gemeint.

Der Rückweg nach JSON ist verlustfrei

Nichts an dieser Umwandlung ist eine Einbahnstraße. Wird das Ergebnis zurück nach JSON umgewandelt, fügen sich die Zeilen wieder zu einem Array zusammen, und weil jede Zeile bereits ein vollständiger Wert war, entspricht das Array danach genau dem, was am Anfang stand — gleiche Datensätze, gleiche Verschachtelung, gleiche Schlüsselreihenfolge.

Das ist beim Entscheiden hilfreich, was aufbewahrt werden sollte. Dient die NDJSON-Datei nur einem einzelnen Ladevorgang, muss sie nicht archiviert werden — das JSON trägt dieselbe Information und wird von mehr Werkzeugen ohne Umweg gelesen. Kommen laufend neue Datensätze hinzu, ist NDJSON die praktischere Form, weil eine Zeile anzuhängen einfacher ist als eine schließende Klammer am Ende einer großen Datei neu zu setzen.

Wann das Array die bessere Form bleibt

Nicht jede Gegenstelle profitiert. Liest ein Programm die Datei ohnehin auf einmal ein — eine Testfixtur, ein Seed-Skript, ein Request-Body, eine Konfigurationsimport-Datei —, ist ein JSON-Array das, was erwartet wird, und NDJSON fügt am anderen Ende nur einen Zusammenbau-Schritt hinzu.

Und werden die Datensätze wiederholt abgefragt statt nur einmal geladen, ist keine der beiden Formen ideal. Beide wiederholen jeden Schlüssel bei jedem Datensatz, was bei einer echten Datei einen großen Teil der Bytes ausmacht. Ein spaltenorientiertes Format speichert dieselben Zeilen mit einem Bruchteil des Platzes und beantwortet eine Zwei-Feld-Frage, indem es nur zwei Felder liest.

Wo diese Umwandlung stattfindet

Direkt im Browser-Tab, in reinem JavaScript, ohne Upload und ohne Konto. Die kostenlose Stufe nimmt Dateien bis 100 MB an, darüber hinaus ist der Arbeitsspeicher die Grenze, nicht irgendeine Vorgabe von uns.

Der Datenschutzaspekt ist bei dieser Umwandlung sehr konkret. Dateien, die für einen Massenimport vorbereitet werden, sind häufig Ereignisprotokolle, Bestellhistorien oder Nutzerdatensätze — sie einem Webdienst zu geben, nur damit die eckigen Klammern verschwinden, wäre ein bemerkenswerter Tausch. Hier verlässt nichts das Gerät, was sich im Netzwerk-Reiter der Entwicklerwerkzeuge in Sekunden nachprüfen lässt.

JSON in NDJSON umwandeln — so geht es

  1. Leg deine JSON-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl NDJSON als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige NDJSON-Datei herunter.

JSON und NDJSON im Vergleich: was sich ändert

JSON im Vergleich zu NDJSON
JSONNDJSON
Vollständiger NameJavaScript Object NotationNewline-Delimited JSON
Dateiendung.json.ndjson, .jsonl
Medientypapplication/jsonapplication/x-ndjson
Erstmals veröffentlicht20012013
SpezifikationRFC 8259
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserJeder BrowserKein Browser
Stattdessen erwogenXML, YAMLCSV

Was erhalten bleibt

Es geht nichts verloren. JSON und NDJSON speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Das Ergebnis öffnen

Kein Browser liest NDJSON. Damit ist es das unhandlichere der beiden. Prüfe lieber vorher, ob die Gegenstelle es annimmt.

jq liest sowohl JSON als auch NDJSON — du kannst das Ergebnis also gegen das Original prüfen, ohne ein zweites Programm zu brauchen.

Wofür die beiden Formate gedacht sind

JSON wurde 2001 veröffentlicht. Festgehalten ist das in RFC 8259 — lohnt sich zu kennen, wenn die Datei das Programm überleben soll, das sie geschrieben hat.

NDJSON stammt aus 2013. jq und pandas lesen das Format.

JSON zu NDJSON: häufige Fragen

Werden meine JSON-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von JSON in NDJSON kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von JSON in NDJSON Qualität verloren?

Nein. NDJSON speichert denselben Inhalt, ohne etwas wegzuwerfen — das Ergebnis ist qualitativ mit dem Original identisch.

Öffnet sich eine NDJSON-Datei im Browser?

Kein Browser liest NDJSON. Damit ist es das unhandlichere der beiden. Prüfe lieber vorher, ob die Gegenstelle es annimmt.

Ist JSON zu NDJSON verlustfrei?

Es geht nichts verloren. JSON und NDJSON speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Mehr über diese Formate