TOML zu JSON

Konvertiert TOML-Dokumente in JSON mit konfigurierbarer Einrückung und Kompaktmodus-Ausgabe.

Konvertiert TOML-Dokumente in JSON mit konfigurierbarer Einrückung und Kompaktmodus-Ausgabe. Konvertiert TOML-Dokumente in JSON mit konfigurierbarer Einrückung und Kompaktmodus-Ausgabe.

Ausgabe

Hintergrund

Warum Sie TOML als JSON mögen könnten

JSON ist die Lingua franca des Webs: jede API spricht es, jeder Editor kann es hervorheben, und jede Sprache hat einen Parser in ihrer Standardbibliothek. TOML ist hervorragend für von Menschen bearbeitete Konfiguration, wird aber als Laufzeit-Datenaustauschformat weniger universell unterstützt. Wenn Sie eine TOML-Konfiguration in ein Tool speisen müssen, das nur JSON konsumiert (Web-Sandkästen, Schema-Validatoren, Code-Generatoren usw.), rettet ein zuverlässiger TOML-zu-JSON-Konverter den Tag.

Die Konvertierung ist weitgehend verlustfrei, weil beide Formate ausdrucksstark genug sind, um dieselben Primitiven darzustellen. Die wenigen TOML-spezifischen Typen (mehrzeilige Strings, Datumswerte) werden zu gewöhnlichen Strings; die wenigen JSON-spezifischen Werte (null) werden zum JSON-Literal null, das TOML kein natives Äquivalent hat.

Wissenswerte Funktionen

Der Konverter bietet einen Schöndruck-Schalter (mit 2-/4-Leerzeichen- Einrückung) und einen Kompaktmodus (eine Zeile). Für sehr große Konfigurationsdateien ist die kompakte Ausgabe viel leichter in einen curl-Request-Body einzufügen. Der Tausch-Button verschiebt die JSON-Ausgabe zurück in das Eingabefeld, sodass Sie sie erneut bearbeiten und wieder als TOML exportieren können.

Workflow-Tipps

Validieren Sie nach der Konvertierung das JSON mit einem Schema-Validator (ajv, jsonschema), bevor Sie es an ein nachgelagertes Tool weitergeben. Der TOML-Parser ist strikt: Er weist unquotierte Skalare zurück, die mit Ziffern beginnen, Inline-Tabellen mit Kommentaren und andere häufige Fehler. Nutzen Sie die Fehlermeldungen, um das Quelldokument zu korrigieren, nicht das JSON.

Praktisches Beispiel

Angenommen, Sie pflegen ein pyproject.toml-Snippet, das die Laufzeitkonfiguration Ihres Tools unter [tool.beetools] auflistet. Um dieselbe Konfiguration in eine JavaScript-Build-Pipeline zu speisen, die nur JSON akzeptiert, lassen Sie das Snippet durch diesen Konverter laufen. Die Ausgabe bewahrt die Tabellenhierarchie, sodass ein verschachtelter Block wie [tool.beetools.cache] zu { "tool": { "beetools": { "cache": { ... } } } } wird. Punktierte Schlüssel fallen auf dem Weg nach außen in verschachtelte Objekte zusammen und spiegeln so, wie der TOML-Parser sie ursprünglich aufgebaut hat. Sobald Sie das JSON haben, validieren Sie es mit ajv oder jsonschema, bevor Sie es nachgelagert weitergeben -- der Konverter übersetzt nur die Syntax.

Intern entwickelt. TOML wird mit der BSD-3-Bibliothek smol-toml geparst, die in public/assets eingebunden ist, dann über natives JSON.stringify als JSON ausgegeben. Es findet kein Upload statt.

Häufig gestellte Fragen

Unterstützt der Konverter TOML-1.0-Funktionen?
Ja. Der Konverter parst TOML 1.0, einschließlich Arrays von Tabellen (`[[name]]`), Inline-Tabellen (`{ key = "value" }`) und punktierten Schlüsseln (`a.b.c`).
Wie werden TOML-Datumswerte in JSON ausgegeben?
Daten ohne Zeitanteil werden zu JSON-Strings in der Form `YYYY-MM-DD`. Datumszeiten werden zu `YYYY-MM-DDTHH:MM:SS[.fraction][Z|+offset]`. Der empfangende JSON-Consumer kann sie mit der Datumsbibliothek seiner Sprache parsen.
Was ist mit mehrzeiligen TOML-Strings?
Sie werden als gewöhnliche JSON-Strings mit eingebetteten Zeilenumbruchzeichen ausgegeben. JSON kann den exakten Literalstil nicht bewahren, aber der geparste Wert ist identisch.
Kann der Konverter punktierte Schlüssel verarbeiten?
Ja. `a.b.c = 1` wird zu `{ "a": { "b": { "c": 1 } } }`. Der Konverter expandiert jeden punktierten Schlüssel in verschachtelte Objekte.
Lehnt der Konverter ungültiges TOML ab?
Ja. Der Parser wirft einen Fehler mit einem Zeilen-/Spaltenzeiger auf das erste ungültige Token. Korrigieren Sie das Quell-TOML und versuchen Sie es erneut.
Wird mein TOML hochgeladen?
Nein. Das Parsen erfolgt lokal über die eingebundene smol-toml-Bibliothek; nichts verlässt den Browser.