Skip to main content
CheckTown
Konverter

TOML-zu-JSON-Converter: Bidirektionale Formatumwandlung

Veröffentlicht 4 Min. Lesezeit
In diesem Artikel

Was ist TOML?

TOML (Tom's Obvious Minimal Language) ist ein Format für Konfigurationsdateien, das leicht zu lesen und zu schreiben sein soll. Es wurde 2013 von Tom Preston-Werner (Mitgründer von GitHub) entwickelt und lässt sich eindeutig auf eine Hashtabelle abbilden, wodurch es sich unkompliziert in Datenstrukturen jeder Programmiersprache parsen lässt. Seine klare Syntax stellt die Lesbarkeit für Menschen über Flexibilität.

Anders als YAML, das auf Einrückung beruht und zahlreiche Stolperfallen hat, oder JSON, dem Kommentare und nachgestellte Kommas fehlen, bietet TOML einen Mittelweg: explizite Typisierung (Zeichenketten, Ganzzahlen, Fließkommazahlen, Booleans, Datumsangaben), eine klare Tabellensyntax mit [Klammern] sowie Unterstützung für Inline-Tabellen und Arrays – ganz ohne die Mehrdeutigkeit, die andere Konfigurationsformate plagt.

So funktioniert die Umwandlung von TOML in JSON

Die Umwandlung zwischen TOML und JSON umfasst das Parsen des Quellformats in eine zwischengeschaltete Datenstruktur und deren Serialisierung in das Zielformat. Jeder TOML-Typ wird direkt auf ein JSON-Äquivalent abgebildet.

  • Schlüssel-Wert-Paare – die key = value-Syntax von TOML wird auf JSON-Objekteigenschaften abgebildet; punktierte Schlüssel wie server.port werden zu verschachtelten Objekten
  • Tabellen und Arrays – TOML-[table]-Kopfzeilen werden zu JSON-Objekten und [[array-of-tables]] zu JSON-Arrays von Objekten, wobei die hierarchische Struktur erhalten bleibt
  • Typsystem – die nativen Typen von TOML (string, integer, float, boolean, datetime) werden auf JSON-Primitive abgebildet; datetime-Werte werden als ISO-8601-Zeichenketten serialisiert, da JSON keinen Datumstyp besitzt

Kostenlos testen – keine Registrierung erforderlich

TOML in JSON umwandeln →

Wo TOML eingesetzt wird

TOML wurde von mehreren großen Ökosystemen aufgrund seiner Klarheit und Strenge als bevorzugtes Konfigurationsformat übernommen.

  • Rust-Ökosystem – Cargo.toml ist das Paketmanifest für jedes Rust-Projekt und definiert Abhängigkeiten, Build-Einstellungen und Metadaten in einem Format, das sowohl für Menschen bearbeitbar als auch maschinell parsebar ist
  • Python-Paketierung – pyproject.toml (PEP 518/621) ist zum Standard für die Konfiguration von Python-Projekten geworden und ersetzt setup.py und setup.cfg durch ein saubereres, deklaratives Format
  • Statische Website-Generatoren – Hugo verwendet config.toml für die Website-Konfiguration, und viele weitere Tools (Deno, InfluxDB, Netlify) nutzen TOML für ihre Konfigurationsdateien

Häufig gestellte Fragen

Was sind die Unterschiede zwischen TOML, YAML und JSON für die Konfiguration?

JSON ist am einfachsten, hat aber keine Kommentare und nachgestellten Kommas, was es für von Menschen bearbeitete Konfigurationsdateien umständlich macht. YAML unterstützt Kommentare und wirkt optisch aufgeräumt, doch seine einrückungsbasierte Syntax führt zu subtilen Fehlern (das Norwegen-Problem, implizite Typumwandlung). TOML unterstützt Kommentare, hat explizite Typisierung und vermeidet einrückungsbasiertes Parsen – was es zur sichersten Wahl für Konfigurationsdateien macht, die Menschen direkt bearbeiten.

Welche Einschränkungen hat TOML?

TOML kann bei tief verschachtelten Strukturen ausführlich werden, da jede Verschachtelungsebene ihre eigene [table.subtable]-Kopfzeile benötigt. Ihm fehlt zudem ein null-Typ (anders als JSON und YAML), was bedeutet, dass fehlende Werte durch das vollständige Weglassen des Schlüssels behandelt werden müssen. Für komplexe Daten mit vielen Verschachtelungsebenen können JSON oder YAML kompakter sein. TOML ist für flache bis mäßig verschachtelte Konfigurationen optimiert, nicht für tiefe Datenhierarchien.

Wie geht TOML mit Datums- und Zeitangaben um?

TOML bietet erstklassige Unterstützung für Datums- und Zeittypen nach RFC 3339: offset datetime (2024-01-15T10:30:00Z), local datetime (2024-01-15T10:30:00), local date (2024-01-15) und local time (10:30:00). Bei der Umwandlung in JSON werden diese als ISO-8601-Zeichenketten serialisiert, da JSON keinen nativen Datumstyp besitzt. Diese native Datumsunterstützung ist einer der Vorteile von TOML gegenüber sowohl JSON als auch YAML.

Verwandte Tools