NDJSON in INI umwandeln

NDJSON kannst du hier kostenlos und ohne Konto in INI 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.
  • Neu aufgebaut INI funktioniert anders als NDJSON. Es ist also nicht der schleichende Qualitätsverlust eines verlustbehafteten Codecs: Was INI ausdrücken kann, wird originalgetreu wiedergegeben — was dort keine Entsprechung hat, bleibt ganz weg.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.
  • Gut zu wissen INI kennt keine Verschachtelung. Alles tiefer als eine Ebene wird zu Schlüsseln mit Punkten zusammengezogen.

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

Ein Werkzeug schreibt NDJSON, ein zweites versteht nur INI

Diese Kombination taucht meist bei einem Bruch zwischen zwei Systemen auf: Ein Monitoring-Tool, ein Exportskript oder ein selbst gehosteter Dienst schreibt seine Konfiguration oder seinen Export zeilenweise als NDJSON, während die Software, die das Ergebnis übernehmen soll — häufig ältere Windows-Anwendungen in kleineren Firmen, die seit Jahren unverändert laufen — ausschließlich INI liest.

Die Umwandlung überbrückt genau diese Lücke, allerdings nicht ohne Reibung. INI wurde nie für eine Liste von Datensätzen entworfen, NDJSON ist nichts anderes als genau das, und dieser Widerspruch prägt jede Zeile des Ergebnisses.

INI kennt keine Liste, NDJSON ist nichts als eine

Der Bruch lässt sich nicht auflösen, nur benennen. Eine INI-Datei ist eine Sammlung benannter Abschnitte mit flachen Schlüssel-Wert-Zeilen darin — meist die Beschreibung einer einzelnen Konfiguration. Eine NDJSON-Datei ist eine Folge von Datensätzen ohne Namen, ohne bedeutungsvolle Reihenfolge und ohne feste Länge.

Es gibt keine Darstellung, die beides erfüllt. Die Umwandlung greift deshalb auf den einzigen Namen zurück, den ein Datensatz in einer Liste besitzt — seine Position: Die erste Zeile wird [0], die zweite [1] und so weiter. Das ist verlustfrei und zugleich eine Datei, deren Abschnittsnamen für sich genommen nichts aussagen.

Die nummerierten Abschnitte sind ein Platzhalter, keine Lösung

Sind die Zeilen tatsächlich mehrere Konfigurationen — je eine pro Server, pro Umgebung, pro Mandant —, macht das Umbenennen von [0] und [1] in die tatsächlichen Namen die Datei sofort brauchbar, und die Schlüssel darunter stimmen bereits. Das ist dann die ganze Arbeit.

Handelt es sich dagegen um Daten statt um Konfiguration, hilft kein Umbenennen — die nummerierten Abschnitte sind dann die eigentliche Antwort der Umwandlung: eine Tabelle in der falschen Notation. CSV, JSON oder eine Datenbank sind das richtige Ziel für so etwas, und jedes davon ist von derselben Quelle aus nur einen Klick entfernt.

Auch eine Datei mit nur einem Datensatz bleibt nummeriert

Das überrascht regelmäßig, deshalb ausdrücklich: Eine Datei mit genau einer Zeile ist immer noch eine Liste mit einem Element, und das Ergebnis ist ein Abschnitt [0] mit sämtlichen Feldern dieses Datensatzes — nicht die saubere INI-Datei, die derselbe Datensatz allein ergeben würde.

Die Lösung liegt beim Quellformat, nicht beim Nachbearbeiten: Diese eine Zeile mit der Endung .json speichern und stattdessen JSON in INI umwandeln — dort werden die obersten Felder des Datensatzes direkt zu den Abschnittsüberschriften, und die Datei sieht aus, als hätte sie jemand von Hand geschrieben. Derselbe Inhalt, ein anderer Weg, wenige Sekunden Aufwand.

Die einzige Verschachtelungsebene ist bereits vergeben

INI unterstützt Abschnitte und nichts innerhalb von Abschnitten. Bei dieser Kombination ist diese eine Ebene bereits von der Datensatznummer belegt, also muss jedes Feld eines Datensatzes — einschließlich seiner ursprünglichen Verschachtelung — in den Schlüsselnamen selbst untergebracht werden.

Ein Datensatz mit einem verschachtelten Objekt für den Server, das darin einen Port trägt, ergibt eine Zeile server.port innerhalb des nummerierten Abschnitts. Nichts geht dabei verloren, aber zwei Datensätze mit derselben Struktur teilen sich strukturell nichts mehr — sie sind zwei Abschnitte, deren Schlüssel zufällig gleich geschrieben sind.

Listen innerhalb eines Datensatzes werden zu nummerierten Schlüsseln

Ein Feld mit einer Liste erlaubter Hosts ergibt Schlüssel mit den Namen 0, 1 und 2 unter dem Pfad dieses Feldes. Zusammen mit den nummerierten Abschnitten kann das zu einer Zeile hosts.0 innerhalb eines Abschnitts [2] führen — lesbar, aber wenig elegant.

INI-Parser, die überhaupt Listen unterstützen, erwarten meist eine einzige Zeile mit kommagetrennten Werten, manche erwarten denselben Schlüssel mehrfach wiederholt. Keines davon entsteht hier automatisch. Kennt die Zielanwendung eine solche Konvention, ist es einfacher, die Liste bereits in der Quelle zu einer einzigen Zeichenkette zusammenzufügen, als jede Gruppe im Nachgang von Hand zu bearbeiten.

Werte bleiben unverändert, ein leerer Wert steht für null

Ein JSON-true wird als true geschrieben, eine Zahl als ihre Ziffern, ein null als Schlüssel ohne alles nach dem Gleichheitszeichen, eine Zeichenkette genau wie sie war. Anführungszeichen erscheinen nur dort, wo der Wert sonst nicht wieder so ankäme, wie er hineinging — bei einem Leerzeichen am Rand, bei einem Wert, der bereits selbst mit einem Anführungszeichen beginnt und endet, oder bei einem Zeilenumbruch.

Der Zeilenumbruch ist der Fall, der es wert ist, genannt zu werden, weil ein INI-Eintrag genau eine Zeile ist. Er wird als Backslash und n innerhalb der Anführungszeichen geschrieben statt als echter Umbruch — das verhindert, dass der folgende Text zu losen Zeilen wird oder, sieht eine Folgezeile wie eine eckige Klammer aus, ein Abschnitt entsteht, der in keinem der Datensätze stand. Zertifikate, Schlüssel und eingebettete Skripte sind die üblichen Träger solcher Werte, und obwohl sie diesen Weg jetzt unversehrt überstehen, gehört ein Wert dieser Größe eigentlich in eine eigene Datei, auf die die INI-Zeile nur verweist.

Kommentare fehlen zunächst — und sind der eigentliche Grund für INI

INI unterstützt Kommentare, eine Zeile beginnend mit Semikolon oder Raute, und die Leseseite dieses Werkzeugs berücksichtigt beide Zeichen ebenfalls. JSON kennt so etwas nicht, also kommt die umgewandelte Datei zunächst ohne aus.

Da der eigentliche Grund für eine INI-Datei fast immer ist, dass ein Mensch sie liest oder bearbeitet, sind genau diese Zeilen die erste sinnvolle Ergänzung nach der Umwandlung: welcher Abschnitt umgebungsspezifisch ist, welcher Wert an anderer Stelle übereinstimmen muss, welchen die Anwendung ohnehin ignoriert — nichts davon konnte die Quelle mitbringen, und genau dafür ist das Zielformat gedacht.

Typen werden zu Text, der Leser entscheidet über die Bedeutung

Jeder Wert in einer INI-Datei ist Text. Ob 8080 eine Zahl ist, ob true ein Wahrheitswert ist und ob 007 seine führenden Nullen behält, entscheidet allein die Software, die die Datei einliest — Pythons configparser macht das mit getint und getboolean ausdrücklich, letzteres akzeptiert dabei auch yes, on und 1 als wahr.

Gegenüber der Quelle ist das ein Verlust, weil dort die Typen noch feststanden. In der Praxis fällt das selten ins Gewicht, weil eine Anwendung, die INI liest, ohnehin schon weiß, welchen Typ sie bei jeder Einstellung erwartet. Wichtig wird es bei Kennungen mit führenden Nullen, und die Lösung dafür liegt im Leseprogramm, nicht in der Datei.

Wann ein anderes Zielformat die ehrlichere Wahl ist

Die einfache Faustregel für diese Kombination: Stehen im Ergebnis mehr als eine Handvoll nummerierter Abschnitte, denen sich kein echter Name geben lässt, hat die Umwandlung eine andere Frage beantwortet als die gestellte. INI beschreibt eine Sache; eine Liste von Datensätzen ist keine Sache.

Die Alternativen liegen aus derselben Datei einen Klick entfernt und passen in diesem Fall besser: CSV oder eine Tabelle, wenn ein Mensch die Datensätze ansehen soll, SQL oder Parquet, wenn eine Maschine sie abfragt, TOML, wenn tatsächlich eine Liste von Datensätzen in einer Konfigurationsdatei gewollt war — dort gibt es mit Array-of-Tables genau die Struktur, die INI fehlt.

Der Export bleibt auf dem eigenen Gerät

Die Umwandlung ist reines JavaScript im Browser-Tab. Nichts wird hochgeladen, es gibt kein Konto und keine Warteschlange, und der kostenlose Tarif nimmt Dateien bis 100 MB an — eine Größe, die eine Konfigurationsdatei praktisch nie erreicht.

Das ist bei diesem Paar wichtiger, als die Dateigröße vermuten lässt. Ein Export aus einer Konfigurations- oder Monitoringquelle enthält häufig Verbindungszeichenketten, interne Hostnamen und, öfter als jemand zugeben möchte, ein Zugangsdatum, das eigentlich eine Umgebungsvariable sein sollte. So etwas an einen fremden Server zu schicken, nur um Klammern gegen Gleichheitszeichen zu tauschen, wäre ein schlechter Tausch — zu jedem Preis.

NDJSON in INI umwandeln — so geht es

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

NDJSON und INI im Vergleich: was sich ändert

NDJSON im Vergleich zu INI
NDJSONINI
Vollständiger NameNewline-Delimited JSONINI-Konfiguration
Dateiendung.ndjson, .jsonl.ini, .cfg, .conf
Medientypapplication/x-ndjsontext/plain
Erstmals veröffentlicht20131985
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAlt, wird überall noch gelesen
Öffnet im BrowserKein BrowserKein Browser
Stattdessen erwogenJSON, CSVTOML, YAML

Das Ergebnis öffnen

Die üblichen Programme überschneiden sich nicht: NDJSON öffnest du in jq und pandas, INI in Notepad und Visual Studio Code — wer das Ergebnis bekommt, braucht also eines aus der zweiten Reihe.

Wofür die beiden Formate gedacht sind

Die beiden zielen auf verschiedene Arbeit: NDJSON auf den Austausch zwischen Programmen und das Streaming, INI auf die Bearbeitung. Das lohnt sich vorher abzuwägen — der Grund, aus dem es das eine gibt, ist meist der Grund, aus dem das andere unpraktisch ist.

INI stammt aus 1985. Notepad und Visual Studio Code lesen das Format.

INI wurde 1985 veröffentlicht, NDJSON 2013. Das ältere ist in der Regel die sicherere Datei zum Weitergeben, das jüngere erledigt dieselbe Aufgabe mit weniger Bytes.

NDJSON zu INI: häufige Fragen

Werden meine NDJSON-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 NDJSON in INI 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 NDJSON in INI Qualität verloren?

NDJSON und INI beschreiben Inhalte auf grundverschiedene Weise. Die Umwandlung ist deshalb ein Nachbau und keine Kopie: originalgetreu, aber nicht Byte für Byte dasselbe. INI kennt keine Verschachtelung. Alles tiefer als eine Ebene wird zu Schlüsseln mit Punkten zusammengezogen.

Muss ich etwas installieren, um INI-Dateien zu öffnen?

Für die Umwandlung selbst nicht — sie läuft in dem Browser, den du ohnehin offen hast. Zum Öffnen brauchst du danach das Programm, das auf deinem Gerät üblicherweise INI Configuration anzeigt.

Mehr über diese Formate