JSON in YAML umwandeln und zurück
Zwischen JSON und YAML umwandeln
JSON und YAML beschreiben dieselben Daten — Maps, Listen, Strings, Zahlen, Booleans und null — in zwei Syntaxen. JSON sprechen APIs und Paketdateien; in YAML sind die Konfigurationsdateien von Docker, Kubernetes, GitHub Actions und CI-Pipelines geschrieben. Dieser Konverter übersetzt das eine sofort ins andere und kümmert sich um die Details, über die man stolpert: Anführungszeichen, Einrückung und die seltsamen Wörter, die YAML als Booleans liest.
Schritte
- 1 Wähle die Richtung und füge dein Dokument in das obere Feld ein. Das Ergebnis erscheint beim Tippen darunter.
- 2 Lege die Einrückungsbreite fest — 2 Leerzeichen sind die Konvention in YAML und in den meisten JSON-Styleguides.
- 3 Kopiere das Ergebnis, lade es als Datei herunter oder nutze die Ausgabe als neue Eingabe, um den Rundlauf zu prüfen.
Was sich zwischen den Formaten ändert
YAML lässt Klammern und die meisten Anführungszeichen weg und nutzt Einrückung für die Struktur; ein 40-zeiliges JSON-Objekt wird zu einem 25-zeiligen YAML-Dokument. Schlüssel behalten ihre Reihenfolge. Listen werden Strichpunkte, verschachtelte Objekte eingerückte Blöcke; ein leeres Objekt oder eine leere Liste bleibt {} bzw. []. In die andere Richtung gehen YAML-Kommentare verloren, weil JSON keine Kommentare kennt.
Warum manche Strings in Anführungszeichen stehen
In YAML wird ein unquotiertes yes, no, on, off, true oder null als Boolean oder null gelesen, 123 oder 1.0 als Zahl. Ein String, der so aussieht, muss in Anführungszeichen stehen, sonst ändert er auf dem Rückweg seinen Typ — das klassische Beispiel ist der Ländercode NO, der zu false wird. Der Konverter quotiert genau diese Strings, dazu alles mit führenden oder abschließenden Leerzeichen, einem Doppelpunkt gefolgt von Leerzeichen oder einem führenden Sonderzeichen, und lässt alles andere der Lesbarkeit halber unquotiert.
Mehrzeilige Strings
Ein String mit Zeilenumbrüchen wird als YAML-Blockskalar geschrieben: ein senkrechter Strich in der Schlüsselzeile und der Text darunter eingerückt, mit einem Minus, wenn der String keinen abschließenden Zeilenumbruch hat. Das ist die Form aus Kubernetes-Manifesten und CI-Dateien, und sie liest sich zu genau demselben String zurück.
Einrückung und Kompatibilität
Der Konverter schreibt YAML 1.2, das jeder moderne Parser liest — PyYAML, js-yaml, Go yaml, Ruby Psych. Verschachtelte Schlüssel werden um die gewählte Breite eingerückt; die Schlüssel eines Objekts in einer Liste stehen unabhängig davon zwei Leerzeichen nach dem Strich, wie es die Spezifikation verlangt. Tabs werden nie verwendet.