Zum Inhalt springen

YAML formatieren und validieren

YAML Formatter & Validator

Rückt YAML einheitlich ein, validiert es und markiert die Tab- und Anker-Fehler, an denen Parser scheitern.

Rückt eine YAML-Datei einheitlich neu ein und sagt Ihnen, was ein anderer Parser anders lesen würde. Es ist ein YAML-1.2-Leser, der Kommentare, Anker, Tags und Blockskalare behält, sodass die Ausgabe Ihr Dokument mit korrigiertem Layout ist – kein Umweg über ein Datenmodell, das Ihre Kommentare weggeworfen hätte.

🔒 Läuft vollständig in Ihrem Browseryamlformatvalidateconfig
Ausgabe
Einrückung

YAML-Eingabe

Eine .yaml-Datei ablegen

Wird nur in diesem Tab gelesen. Nichts wird hochgeladen.

Formatiertes YAML

Formatiert.

Gelesen, aber darüber sind sich die Parser nicht einig

  • 19:22 — `no` ist in YAML 1.2 die Zeichenkette "no". Ein YAML-1.1-Parser liest es als Boolean – setzen Sie es in Anführungszeichen oder schreiben Sie true/false, damit beide übereinstimmen.

Dokumente

1

Schlüssel

30

Listenpunkte

8

Anker / Aliase

1 / 1

Warnungen

1

Was dieser Formatierer tut und was nicht

  • · Gelesen mit dem Core-Schema von YAML 1.2. yes und no und on und off sind Zeichenketten, und 0755 ist die Dezimalzahl 755, nicht oktal. Werte, die ein 1.1-Parser anders läse, stehen oben als Warnung.
  • · Kommentare, Anker (&), Aliase (*), Tags sowie die Block-Skalare | und > bleiben alle erhalten. Die Reihenfolge der Werte wird ebenfalls nicht verändert.
  • · Einrückung mit Tabulatoren, doppelte Schlüssel, ein vor seiner Definition verwendeter Alias und ein nicht geschlossenes Anführungszeichen werden alle als Fehler erkannt, mit Zeile und Spalte.
  • · Der Merge-Schlüssel << ist ein 1.1-Feature, aber docker-compose und Ansible nutzen ihn so verbreitet, dass er beim Umwandeln nach JSON angewendet wird – mit einer Warnung, die das sagt.
  • · Ein Kommentar in einer Flow-Collection wie [a, b] hat keine Zeile, an die er gehört, und geht verloren. Jeder andere Kommentar bleibt erhalten.

Für die Umwandlung nach JSON oder TOML nehmen Sie den JSON-⇄-YAML-Konverter, und um ein Dokument gegen ein Schema zu prüfen den JSON-Schema-Validator.

So funktioniert es

  1. Fügen Sie das Manifest oder die Konfiguration ein

    Ein Kubernetes-Manifest, eine CI-Datei, eine docker-compose. Mehrere durch `---` getrennte Dokumente werden als Stream gelesen und getrennt gezählt.

  2. Wählen Sie den Listenstil

    Die eine Einstellung, über die tatsächlich gestritten wird: ob `- item` auf gleicher Höhe mit seinem Schlüssel steht oder darunter eingerückt. Beides ist gültiges YAML; Kubernetes-Manifeste verwenden üblicherweise die bündige Form.

  3. Lesen Sie die Warnungen

    Werte, deren Bedeutung davon abhängt, welche YAML-Version der Leser implementiert – `yes`, `no`, `0755` –, werden mit Zeile und Spalte aufgeführt. Das sind die, die auf einem anderen Werkzeug ein Deployment brechen.

  4. Oder schalten Sie die Ausgabe auf JSON um

    Derselbe Parse, als JSON gerendert – der schnellste Weg zu sehen, wozu ein Wert tatsächlich aufgelöst wurde, einschließlich dessen, wozu ein Merge-Key sich entfaltet hat.

Häufige Fragen

Warum ist `no` hier ein String?

Weil das Core-Schema von YAML 1.2 es so sagt: Die einzigen Booleans sind `true` und `false`. YAML 1.1 – das bei PyYAML immer noch Standard ist – liest `no`, `off` und `n` als false. Jeder Wert, bei dem die beiden uneins sind, wird als Warnung markiert, denn es ist ein echter Verhaltensunterschied, kein stilistischer.

Bleiben meine Anker und Aliase erhalten?

In der YAML-Ausgabe ja – `&res` und `*res` kommen so heraus, wie Sie sie geschrieben haben, und die Anzahl steht in der Statistik. Die JSON-Ansicht muss sie auflösen, denn JSON hat keine Möglichkeit, „derselbe Knoten noch einmal“ zu sagen.

Unterstützt es Merge-Keys?

`<<:` ist ein Merkmal von YAML 1.1 und nicht Teil von 1.2 – aber docker-compose- und Ansible-Dateien verwenden es ständig, deshalb wird es beim Konvertieren nach JSON angewendet, mit einer Warnung, die sagt, dass das geschehen ist. In der YAML-Ausgabe bleibt es genau so, wie es geschrieben steht.

Ein Kommentar ist verschwunden. Warum?

Mit ziemlicher Sicherheit stand er in einer Flow-Collection – `[a, # note\n b]`. Eine Flow-Collection wird als einzelne Zeile neu ausgegeben, und ein Kommentar dort hat keine Zeile, an die er sich hängen könnte. Jeder Kommentar auf eigener Zeile oder hinter einem Wert überlebt.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.