YamlBox

YAML Werkzeuge · 5 Min. gelesen

JSON bis YAML: Maschinenausgabe wieder lesbar machen

JSON ist am Draht ausgezeichnet und bei einer Zuganforderung unangenehm. Wenn eine API-Antwort, ein Terraform-Zustandsfragment oder ein Paketmanifest zu etwas werden muss, das ein Mensch Zeile für Zeile überprüft, ist eine JSON-zu-YAML-Konvertierung die übliche Antwort – und die Details darüber, wie diese Konvertierung in Anführungszeichen und Einrückungen erfolgt, entscheiden darüber, ob das Ergebnis sechs Monate später lesbar bleibt.

Aktualisiert

Warum überhaupt JSON in YAML umrechnen?

Die beiden Formate enthalten identische Daten, sind jedoch für unterschiedliche Leser optimiert. JSON gibt Zeichen für geschweifte Klammern, Kommas und Anführungszeichen aus; YAML gibt sie für eine Struktur aus, die das Auge als Einprägung verfolgen kann. Für Daten, die von Programmen generiert und konsumiert werden, gewinnt JSON. Für Daten, die eine Person bearbeitet – Helm Werte, CI-Definitionen, Ansible-Inventare, Docker Dateien erstellen – gewinnt YAML, weshalb diese Richtung immer dann auftaucht, wenn generierte Daten einen menschlichen Eigentümer benötigen.

Kommentare sind das Einzige, was nicht überleben kann

Die Konvertierung kann die Lesbarkeit wiederherstellen, aber nicht die Absicht: Die Quelle JSON hatte keine Kommentare zum Übertragen. Wenn Ihre generierte YAML von Personen verwaltet wird, fügen Sie einen kurzen Header-Kommentar hinzu, der beschreibt, woher sie stammt und was sie neu generiert, damit niemand eine Datei bearbeitet, die bei der nächsten Bereitstellung überschrieben wird.

Zitat: Wo umgewandelt YAML leise bricht

YAML behandelt mehrere bloße Wörter als Werte und nicht als Zeichenfolgen. Ein Konverter, der Anführungszeichen aggressiv löscht, kann Typen ändern, ohne ein einziges sichtbares Zeichen zu ändern:

                country: NO        # parses as boolean false in YAML 1.1
version: 1.10      # parses as the number 1.1
time: 22:30        # parses as a sexagesimal integer
name: "on"         # quoted on purpose — must stay a string
              

Eine gute Ausgabe zitiert jede Zeichenfolge, die falsch gelesen werden könnte – `yes`/`no`/`on`/`off`, numerisch aussehende Bezeichner, Werte mit führenden Nullen, Zeiten und Datumsangaben – anstatt alles in Anführungszeichen zu setzen, was die Interpunktionswand erzeugt, der Sie entkommen wollten.

Einrückung und mehrzeilige Zeichenfolgen

Zwei Leerzeichen sind die sichere Standardeinstellung: Es wird von der Kubernetes-Dokumentation, Helm-Vorlagen und den meisten Editoren angenommen und übersteht das Kopieren und Einfügen zwischen Werkzeugen. Eine tiefe Verschachtelung im Vier-Raum-Stil ist ab etwa sechs Ebenen nur schwer zu scannen. Lange Zeichenfolgen sind die andere Formatierungsentscheidung – ein JSON-Wert mit eingebetteten Zeilenumbrüchen kann als maskierter Einzeiler oder als YAML-Blockskalar ausgegeben werden, der sich natürlich liest. Wenn es sich bei dem Feld um ein Shell-Skript oder einen Konfigurationsausschnitt handelt, fragen Sie nach dem Blockformular.

Das Sortieren von Schlüsseln macht Unterschiede aussagekräftig

Die Reihenfolge der JSON-Objektschlüssel ist nicht von Bedeutung, daher steht es den Konvertern frei, sie neu anzuordnen. Durch die alphabetische Sortierung der Schlüssel werden die neu generierten Dateien sauber unterschieden: Ohne sie wird eine geänderte Bereitstellungsreihenfolge als eine Neufassung der gesamten Datei angezeigt. Wenn Sie generierte YAML in Git verfolgen, ist die Sortierung der Unterschied zwischen einem einzeiligen Diff und einem zweihundertzeiligen Diff.

Halten Sie die Hin- und Rückfahrt an einem Ort

Da die beiden Richtungen invers sind, lohnt es sich, beide im selben Tool zu haben, damit Sie konvertieren, bearbeiten und zurückkonvertieren können, ohne den Kontext zu wechseln oder Ihre Konfiguration in drei verschiedene Dienste einzufügen. Der browserbasierte Konverter auf dieser Website wird mit dem YAML-zu-JSON-Tool gekoppelt, arbeitet offline und lädt niemals die Nutzlast hoch – was wichtig ist, wenn es sich bei dem fraglichen JSON um eine Produktions-API-Antwort handelt.

JSON bis YAML – häufig gestellte Fragen

Behält das umgerechnete YAML meine Schlüsselreihenfolge bei?

Konverter können Schlüssel sortieren oder die Einfügereihenfolge beibehalten. Sortieren ist normalerweise die bessere Wahl für in Git verfolgte Dateien, da die Neugenerierung stabile, minimale Unterschiede erzeugt; Behalten Sie die ursprüngliche Reihenfolge bei, wenn die Reihenfolge selbst für den Leser von Bedeutung ist.

Warum änderte sich der Typ eines Werts nach einer Konvertierung von JSON in YAML?

Bloße Skalare in YAML werden neu interpretiert: `no`, `on` und `off` können zu Booleschen Werten werden, und Werte wie `1.10` können zu Zahlen werden. Ein sicherer Konverter zitiert Zeichenfolgen, die andernfalls falsch gelesen würden. Wenn ein Feld eine Zeichenfolge bleiben muss, zitieren Sie es explizit in YAML.

Kann ich JSON offline in YAML umrechnen?

Ja – bei der Konvertierung handelt es sich um eine lokale Analyse und erneute Serialisierung ohne Beteiligung eines Servers, sodass das Tool auch ohne Netzwerkverbindung weiterarbeitet und Ihre Daten den Browser-Tab nie verlassen.

In diesem Beitrag erwähnte Tools

Durchsuchen Sie die vollständige Liste der 19-Tools

Weitere Artikel zum Lesen

Alle 19 Beiträge →