Skip to main content
CheckTown
Dev-Tools

TOML-Validierung: Syntaxregeln, häufige Fehler und Best Practices

Veröffentlicht 6 Min. Lesezeit
In diesem Artikel

Was ist TOML?

TOML (Tom's Obvious, Minimal Language) ist ein Konfigurationsdateiformat, das einfach zu lesen und zu schreiben sein soll. Entwickelt von Tom Preston-Werner (Mitgründer von GitHub), lässt sich TOML klar auf eine Hashtabelle abbilden und ist eindeutig gedacht – jedes TOML-Dokument hat genau eine gültige Interpretation.

TOML ist das bevorzugte Konfigurationsformat für Rust (Cargo.toml), Python (pyproject.toml) und viele Static-Site-Generatoren. Es unterstützt Kommentare, Datums-/Zeit-Literale und verschachtelte Tabellen und bleibt dabei einfacher als YAML und menschenfreundlicher als JSON.

TOML-Syntaxregeln

Die TOML-Syntax ist darauf ausgelegt, minimal und eindeutig zu sein. Hier sind die Kernelemente der Sprache.

  • Schlüssel-Wert-Paare – der grundlegende Baustein, geschrieben als key = value in jeder Zeile. Schlüssel können bloß (ohne Anführungszeichen), in Anführungszeichen oder mit Punkten für verschachtelten Zugriff geschrieben werden.
  • Tabellen – Abschnitte, die mit [table_name]-Überschriften definiert werden und zusammengehörige Schlüssel-Wert-Paare gruppieren. Tabellen können über Punkt-Schlüssel oder die [[array_of_tables]]-Syntax verschachtelt werden.
  • Arrays – geordnete Listen, die mit eckigen Klammern [1, 2, 3] definiert werden. Alle Elemente müssen vom selben Typ sein. Mehrzeilige Arrays sind mit nachgestellten Kommas erlaubt.
  • Datums-/Zeit-Literale – TOML unterstützt nativ RFC-3339-Daten wie 2026-03-15T14:30:00Z, lokale Daten (2026-03-15), lokale Zeiten (14:30:00) und Datums-/Zeit-Offsets.
  • Mehrzeilige Zeichenketten – in dreifache Anführungszeichen gesetzte Zeichenketten ("""text""") bewahren Zeilenumbrüche und erlauben lange Inhalte ohne Escape-Sequenzen. Literale Zeichenketten verwenden einfache Anführungszeichen ('no\escape').

Häufige TOML-Muster

TOML wird in Projektkonfigurationsdateien verschiedener Ökosysteme weit verbreitet eingesetzt.

  • Cargo.toml – der Paketmanager von Rust verwendet TOML für Projektmetadaten, Abhängigkeiten, Build-Profile und Workspace-Konfiguration
  • pyproject.toml – die moderne Build-System-Konfiguration von Python, definiert durch PEP 517/518, ersetzt setup.py und setup.cfg durch eine standardisierte TOML-Datei
  • Hugo-Konfiguration – der Static-Site-Generator Hugo verwendet TOML (oder YAML/JSON) für die Site-Konfiguration einschließlich Themes, Menüs, Taxonomien und Build-Einstellungen
  • Netlify-Konfiguration – netlify.toml konfiguriert Build-Befehle, Weiterleitungsregeln, Umgebungsvariablen und Deploy-Kontexte für Netlify-Sites

Kostenlos testen – keine Registrierung erforderlich

TOML online validieren →

Häufige Validierungsfehler

TOML ist von Natur aus streng – viele Fehler, die YAML stillschweigend akzeptieren würde, schlagen in TOML fehl. Hier sind die häufigsten Validierungsprobleme.

  • Doppelte Schlüssel – TOML verbietet es, denselben Schlüssel zweimal in derselben Tabelle zu definieren. Das gilt auch für Schlüssel, die über die Punkt-Notation und über reguläre Tabellenüberschriften gesetzt werden.
  • Ungültiges Datumsformat – TOML verlangt RFC-3339-Daten. Häufige Fehler sind das fehlende T-Trennzeichen (2026-03-15 14:30:00 statt 2026-03-15T14:30:00) oder die Verwendung von Schrägstrichen statt Bindestrichen.
  • Gemischte Array-Typen – alle Elemente in einem TOML-Array müssen vom selben Typ sein. [1, "two", 3] ist ungültig, weil es Ganzzahlen und Zeichenketten mischt.
  • Nicht geschlossene Zeichenketten – vergisst man, eine Zeichenkette in Anführungszeichen zu schließen, oder verwendet man den falschen Anführungszeichentyp, entstehen Parse-Fehler. Achten Sie auf nicht übereinstimmende dreifache Anführungszeichen in mehrzeiligen Zeichenketten.

TOML vs. YAML vs. JSON

Jedes Format hat Stärken, die es für bestimmte Anwendungsfälle besser geeignet machen.

  • Lesbarkeit – TOML und YAML sind beide für Menschen sehr gut lesbar. TOML verwendet explizite Syntax (Klammern, Gleichheitszeichen), während YAML auf Einrückung setzt. JSON ist für Konfiguration weniger lesbar, weil Anführungszeichen erforderlich sind und keine Kommentare möglich sind.
  • Strenge – TOML ist das strengste der drei. Es lehnt mehrdeutige Konstrukte ab und hat keine implizite Typumwandlung. Die Flexibilität von YAML (yes/no als Booleans, Zeichenketten ohne Anführungszeichen) führt oft zu unerwartetem Verhalten.
  • Kommentare – sowohl TOML als auch YAML unterstützen Kommentare (TOML verwendet #, YAML verwendet #). JSON unterstützt überhaupt keine Kommentare, was es für Konfigurationsdateien, die Dokumentation benötigen, weniger geeignet macht.

Häufig gestellte Fragen

Wie funktionieren verschachtelte Tabellen in TOML?

TOML unterstützt verschachtelte Tabellen über zwei Mechanismen: Punkt-Schlüssel (a.b.c = value) und Tabellenüberschriften ([parent.child]). Beide erzeugen dieselbe verschachtelte Struktur. Für Arrays von Tabellen (wie mehrere Paketabhängigkeiten) verwenden Sie doppelte Klammern ([[array_name]]). Jeder [[array_name]]-Block fügt dem Array ein neues Element hinzu.

Was sind die Unterschiede zwischen TOML v1.0 und früheren Versionen?

TOML v1.0 (veröffentlicht im Januar 2021) ist die erste stabile Version. Zu den wichtigsten Änderungen gegenüber den Pre-1.0-Entwürfen zählen die geklärte Handhabung von Datums-/Zeitwerten, die formalisierte Semantik von Inline-Tabellen und das verfeinerte Verhalten von Tabellen-Arrays. Die meisten modernen Tools verwenden TOML v1.0 – wenn Sie neue Konfigurationsdateien schreiben, sollten Sie auf v1.0 abzielen.

Wie konvertiere ich YAML in TOML?

YAML und TOML haben unterschiedliche Datenmodelle, daher ist die Konvertierung nicht immer eins zu eins. Einfache Schlüssel-Wert-Strukturen und verschachtelte Objekte lassen sich direkt konvertieren. YAML-Features wie Anker, Aliasse und komplexe Schlüssel haben kein TOML-Äquivalent. Für die meisten Konfigurationsdateien ist die Konvertierung unkompliziert – bilden Sie YAML-Dictionaries auf TOML-Tabellen und YAML-Listen auf TOML-Arrays ab.

Verwandte Tools