Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
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.
Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.
Sie werden nacheinander umgewandelt und kommen zusammen als ZIP zurück.
NDJSON in 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 | INI | |
|---|---|---|
| Vollständiger Name | Newline-Delimited JSON | INI-Konfiguration |
| Dateiendung | .ndjson, .jsonl | .ini, .cfg, .conf |
| Medientyp | application/x-ndjson | text/plain |
| Erstmals veröffentlicht | 2013 | 1985 |
| Lizenzlage | Offener Standard | Offener Standard |
| Heutiger Stand | Aktuell | Alt, wird überall noch gelesen |
| Öffnet im Browser | Kein Browser | Kein Browser |
| Stattdessen erwogen | JSON, CSV | TOML, YAML |
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.
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.
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.
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.
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.
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.