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.