Anleitung
- Wählen Sie die Richtung: JSON → YAML oder YAML → JSON.
- Fügen Sie Ihre Daten ein oder klicken Sie auf „Beispiel ausprobieren“. Das Ergebnis wird während der Eingabe aktualisiert.
- Wählen Sie für die Ausgabe eine Einrückung mit 2 oder 4 Leerzeichen.
- Kopieren Sie das Ergebnis oder laden Sie es herunter. Mit „Ausgabe als Eingabe verwenden“ wechseln Sie die Richtung und können die Daten zurückkonvertieren.
So funktioniert es
Für die Konvertierung wird die Open-Source-Bibliothek yaml (Version 2) verwendet, die die YAML-1.2-Spezifikation umsetzt. YAML 1.2 ist für praktische Zwecke eine Obermenge von JSON. Daher lässt sich jedes JSON-Dokument verlustfrei in YAML umwandeln. YAML, das ausschließlich Maps, Listen, Zeichenfolgen, Zahlen, boolesche Werte und null verwendet, lässt sich in identisches JSON zurückverwandeln.
Beim Schreiben von YAML setzt das Tool Zeichenfolgen in Anführungszeichen, die als etwas anderes verstanden werden könnten. Ältere YAML-1.1-Parser wie PyYAML und viele CI-Tools interpretieren yes, no, on und off als boolesche Werte, 0777 als Oktalzahl und 2024-01-31 als Datum. Daher werden diese Werte als "yes", "0777" und "2024-01-31" geschrieben. Lange Zeichenfolgen werden nicht auf mehrere Zeilen umgebrochen. Kommentare können nicht übernommen werden, da JSON keine Kommentare kennt.
Beim Lesen von YAML werden Anker (&name) und Aliase (*name) einschließlich des Merge-Schlüssels << aufgelöst. Eine Datei mit mehreren durch --- getrennten Dokumenten wird zu einem JSON-Array. Zum Schutz Ihres Browsers ist die Auflösung von Aliasen begrenzt, wodurch „Billion-Laughs“-Dokumente verhindert werden. YAML-Werte ohne entsprechendes JSON-Äquivalent werden so originalgetreu wie möglich umgewandelt: .inf und .nan werden zu null, Zeitstempel bleiben Zeichenfolgen. Syntaxfehler werden mit Zeilen- und Spaltenangabe gemeldet.
Beispiele
Kubernetes-Manifest
Ein Skript schreibt ein Deployment als JSON. Bei der Konvertierung erhält es das YAML-Layout, das kubectl-Nutzer erwarten. Listen unter containers werden beispielsweise als - name: web geschrieben. Werte wie "no" bleiben in Anführungszeichen, damit sie Zeichenfolgen bleiben.
CI-Konfiguration mit Ankern
Eine Pipeline-Datei definiert Standardeinstellungen mit defaults: &defaults und verwendet sie mit <<: *defaults erneut. Bei der Konvertierung in JSON sehen Sie genau, welche Schlüssel jeder Job nach dem Zusammenführen erhält.
OpenAPI-Spezifikation
Eine OpenAPI-Datei wird in YAML gepflegt, aber ein Codegenerator benötigt JSON. Fügen Sie das YAML ein, wählen Sie eine Einrückung mit 2 Leerzeichen und laden Sie die .json-Datei herunter.
Häufig gestellte Fragen
Warum steht "yes" in meinem YAML in Anführungszeichen?
Nach den YAML-1.1-Regeln, die PyYAML, Ansible und viele andere Tools noch verwenden, ist ein nicht in Anführungszeichen gesetztes yes, no, on oder off ein boolescher Wert. In Anführungszeichen bleibt der Wert in jedem Parser eine Zeichenfolge. Die Anführungszeichen gehören nicht zum Wert.
Bleiben YAML-Kommentare bei der Umwandlung in JSON erhalten?
Nein. JSON kennt keine Kommentarsyntax, daher werden Kommentare entfernt. Bei der Rückumwandlung von JSON in YAML werden sie nicht wiederhergestellt.
Was geschieht mit mehreren durch --- getrennten YAML-Dokumenten?
Sie werden der Reihe nach in ein einzelnes JSON-Array mit je einem Element pro Dokument umgewandelt. Ein einzelnes Dokument wird direkt in seinen Wert umgewandelt.
Was ist mit benutzerdefinierten Tags wie !Ref in CloudFormation?
Anwendungsspezifische Tags werden nicht erkannt. Das Tool zeigt eine Warnung an und wandelt den markierten Wert als normalen Wert um. Aus !Ref MyBucket wird beispielsweise die Zeichenfolge "MyBucket"; das Tag selbst geht verloren.
Datenschutz
Beide Konvertierungsrichtungen laufen vollständig in Ihrem Browser. Ihr JSON oder YAML wird weder hochgeladen noch gespeichert oder in Analysen erfasst.