Guide
Häufige YAML-Fehler
Sechs Fehler verursachen fast jeden gescheiterten Parse. Hier steht, was jeder bedeutet — und die exakte Lösung.
Von yamltojsonfree · Veröffentlicht am · Aktualisiert am
Warum YAML-Fehler so schwer zu lesen sind
YAML baut Struktur aus Einrückung. Wenn etwas schiefgeht, kann der Parser oft nicht sagen, was schiefging — nur, dass die Struktur keinen Sinn mehr ergibt. Deshalb wird eine nicht geschlossene Klammer in Zeile 12 regelmäßig als „fehlerhafte Einrückung“ in Zeile 50 gemeldet: Der Parser hat weiter Zeilen gelesen, auf ein schließendes Zeichen gewartet, das nie kam, und erst viel später aufgegeben.
Die Fehler unten sind nach ihrer tatsächlichen Ursache sortiert, nicht nach der Meldung, die ein Parser ausgibt. Wenn du sie lieber automatisch diagnostizieren lässt, füge dein Dokument in den YAML-Validator oder den YAML-zu-JSON-Converter ein — jeder dieser Fehler wird als das erkannt, was er ist, mit Zeile, verständlicher Erklärung und Lösungsvorschlag.
Die sechs Fehler im Detail
Die sechs häufigsten YAML-Syntaxfehler sind: (1) ein Tabulator zur Einrückung, (2) ein unzitierter Wert mit Doppelpunkt, (3) eine nicht geschlossene Klammer oder ein nicht geschlossenes Anführungszeichen, (4) ein doppelter Schlüssel, (5) ein Alias auf einen nicht existierenden Anchor und (6) unterschiedlich eingerückte Geschwisterschlüssel.
1. Ein Tabulator wird zur Einrückung verwendet
Warum: YAML verbietet Tabulatoren zur Einrückung vollständig, weil ihre Breite je nach Editor unterschiedlich ist.
Lösung: Ersetze jeden Tabulator durch Leerzeichen — zwei pro Ebene sind üblich. Die meisten Editoren können das mit „Einrückung in Leerzeichen umwandeln“.
2. Ein unzitierter Wert enthält einen Doppelpunkt
Warum: title: foo: bar ist mehrdeutig — der Parser kann nicht erkennen, welcher Doppelpunkt Schlüssel und Wert trennt.
Lösung: Zitiere den Wert: title: 'foo: bar'.
3. Eine Klammer oder ein Anführungszeichen wird nie geschlossen
Warum: Flow-Collections wie [80, 443] und zitierte Strings müssen in derselben logischen Zeile geschlossen werden. Die meisten Parser melden das viele Zeilen später als Einrückungsfehler.
Lösung: Füge das schließende Zeichen hinzu, oder schreibe den Wert im Block-Stil mit einem Eintrag pro Zeile.
4. Derselbe Schlüssel kommt zweimal vor
Warum: YAML-Mappings verlangen eindeutige Schlüssel, JSON-Objekte ebenso. Stillschweigend den letzten Wert zu behalten würde einen echten Bug verstecken.
Lösung: Benenne das Duplikat um oder entferne es — oder rücke es eine Ebene tiefer ein, wenn es als Unterschlüssel gemeint war.
5. Ein Alias zeigt auf einen Anchor, der nicht existiert
Warum: *name verweist auf einen mit &name definierten Anchor. Anchors müssen im Dokument vor den Aliases stehen, die sie verwenden.
Lösung: Definiere zuerst den Anchor und prüfe die Schreibweise — Anchor-Namen unterscheiden Groß- und Kleinschreibung.
6. Geschwisterschlüssel sind unterschiedlich eingerückt
Warum: Jeder Schlüssel im selben Block muss auf derselben Einrückung sitzen. Zwei Leerzeichen in einer Zeile und drei in der nächsten beenden den Block vorzeitig.
Lösung: Bring alle Geschwisterschlüssel auf dieselbe Einrückung.
Zwei Fixes, vorher und nachher
Die beiden Fehler, auf die man am häufigsten stößt — als fehlerhaftes YAML neben seiner korrigierten Form.
Unzitierter Doppelpunkt in einem Wert
Der zweite Doppelpunkt macht die Zeile mehrdeutig; den ganzen Wert zu zitieren löst das.
Fehlerhaft
title: Deploy: production
owner: platform teamKorrigiert
title: "Deploy: production"
owner: platform teamUngleiche Einrückung von Geschwistern
„ports“ steht auf drei Leerzeichen, seine Geschwister auf zwei — der Block endet also vorzeitig.
Fehlerhaft
server:
host: localhost
ports:
- 8080Korrigiert
server:
host: localhost
ports:
- 8080Wenn das YAML gültig ist und trotzdem falsch
Ein Dokument kann perfekt parsen und trotzdem etwas anderes bedeuten, als du wolltest. Der Klassiker ist country: NO, gültiges YAML in jeder Version — aber unter YAML 1.2 der String "NO" und unter YAML 1.1 der Boolean false. Diese ganze Klasse stiller Typänderungen behandelt der Leitfaden YAML 1.1 vs. 1.2.
Quellen
- YAML-1.2.2-Spezifikation — die Regeln für Einrückung, Flow-Collections, Anchors und eindeutige Schlüssel
- YAML 1.2.2 §6.1 Einrückungs-Leerzeichen — warum Tabulatoren nicht erlaubt sind
- PyYAML-Dokumentation — die Fehlermeldungen, die die meisten Python-Nutzer sehen
- js-yaml — der Parser hinter den Tools dieser Seite
Behebe dein YAML jetzt
Jeder Fehler auf dieser Seite wird von den kostenlosen Tools dieser Website mit exakter Zeile und Lösungsvorschlag erkannt. Nichts wird hochgeladen — alles läuft in deinem Browser.
Alle Tools
YAML zu JSON
Wandle YAML in formatiertes oder minifiziertes JSON um, mit Fehlern an der exakten Zeile.
ÖffnenJSON zu YAML
Mache aus JSON lesbares YAML, mit Kontrolle über Einrückung und Schlüssel.
ÖffnenYAML Validator
Prüfe YAML-Syntax und erhalte eine klare Erklärung des Problems.
ÖffnenYAML Formatter
Formatiere unordentliches YAML mit sauberer Einrückung und erhaltenen Kommentaren.
Öffnen