Entwicklertools · Syntaxkonverter
So funktioniert die Konvertierung von JSON in YAML: Anführungszeichen, Einrückung und Fließstil
· Wie es funktioniert
json Yaml Entwickler-Workflow
JSON zu YAML scheint eine Frage des Löschens von Klammern zu sein, aber ein Konverter trifft echte Entscheidungen darüber, welche Zeichenfolgen Anführungszeichen benötigen und wann der Block- oder Flow-Stil verwendet werden soll. In diesem Beitrag werden diese Entscheidungen erläutert.
Die Klammern verschwinden, aber wo bleiben die Anführungszeichen? – eine in YAML konvertierte JSON-Nutzlast und die Mischung aus zitierten und bloßen Zeichenfolgen im Ergebnis
Durch das Entfernen von Klammern und Anführungszeichen wird aus einem JSON-Objekt keine vertrauenswürdige YAML-Datei. Der Konverter muss entscheiden, wie eine verschachtelte Zuordnung, ein Array, eine Zeichenfolge und ein Zeilenumbruch dargestellt werden und ob ein Wert, der wie eine Zahl oder ein Boolescher Wert aussieht, Text bleibt. Ein DevOps-Ingenieur, der eine API-Dienstdefinition nach Compose verschiebt, muss diese Entscheidungen vorhersehbar machen, bevor er das Ergebnis in ein Bereitstellungsverzeichnis kopiert. Durch die Konvertierung wird die Syntax geändert, nicht die tatsächliche Konfiguration des Dienstes.
JSON ist (fast) bereits YAML – weshalb die Eingabe einen gültigen YAML 1.2-Flow-Stil hat, bevor die Konvertierung überhaupt beginnt
YAML 1.2 behandelt die JSON-Syntax als zulässige Teilmenge im Flussstil für gewöhnliche JSON-förmige Daten, was erklärt, warum ein JSON-Objekt bereits YAML nahe kommt. Bei einer sinnvollen Konvertierung wird jedoch normalerweise auf eine für Menschen lesbare Einrückung im Blockstil umgestellt. Die Eingabe wird zuerst als JSON geparst; Beliebige Shell-Befehle werden niemals ausgeführt. ToolAcre lädt YAML über ein eingeschränktes Schema auf dem umgekehrten Pfad, lehnt unsichere Tags ab und begrenzt die Alias-Erweiterung, sodass ein Konverter nicht zum Instanziieren beliebiger Objekte aus einem nicht vertrauenswürdigen !!js/function-Tag verwendet werden kann.
Blockstil versus Flussstil – wie ein Konverter einrückungsbasierte Zuordnungen und Sequenzen gegenüber geschweiften Klammern auswählt und was die Einrückungstiefe bedeutet
Der Blockstil verwendet eingerückte Schlüssel/Wert-Paare und Zeilen, die mit einem Bindestrich für Array-Elemente beginnen: Eine Bildzeichenfolge unter services.web wird unter dem Web eingerückt, während Ports zu einer Sequenz werden. Der Flow-Stil behält JSON-ähnliche Klammern und Klammern bei. ToolAcre verwendet standardmäßig js-yaml-Dump mit Einrückung um zwei Leerzeichen, ohne Referenzen und einer unbegrenzten Zeilenbreiteneinstellung, anstatt lediglich die Zeichensetzung durch einen regulären Ausdruck zu ersetzen. Das Ändern der Einzugsbreite wirkt sich auf die Lesbarkeit aus, nicht auf die tatsächlichen Schlüssel oder die Array-Reihenfolge.
Welche Zeichenfolgen müssen in Anführungszeichen stehen – Werte, die sonst zu Booleschen Werten, Zahlen, Nullen oder Datumsangaben werden würden, und Zeichenfolgen mit Doppelpunkten, Hashes oder führenden Leerzeichen
Einige Zeichenfolgen müssen in Anführungszeichen gesetzt werden, um einen anderen Parser zu überleben: „false“ sollte Text und nicht boolescher Wert „false“ bleiben, „2026-09-28“ sollte in einem YAML 1.1-Consumer nicht stillschweigend zu einem Datum werden, und ein Doppelpunkt gefolgt von einem Leerzeichen kann mit Mapping-Syntax verwechselt werden. Der Dumper von ToolAcre wählt schützende Anführungszeichen, einschließlich Kompatibilitätsoptionen für ältere YAML-Reader. Das Zitieren einer gewöhnlichen Bildreferenz mit einem Doppelpunkt ist nicht immer erforderlich, und das unnötige Entfernen der vorhandenen Anführungszeichen kann einen Roundtrip unterbrechen. Überprüfen Sie sowohl die Typen als auch das optische Erscheinungsbild.
Mehrzeilige Zeichenfolgen – wie eine neue Zeile innerhalb einer JSON-Zeichenfolge zu einem literalen (|) oder gefalteten (>) Blockskalar werden kann
Eine JSON-Zeichenfolge, die eine tatsächliche neue Zeile enthält, kann mit | als YAML-Blockskalar gerendert werden. Die |- Form entfernt den letzten Zeilenumbruch, wohingegen | bewahrt es; > würde einige Zeilenumbrüche in Leerzeichen falten. Diese Indikatoren beschreiben Daten, keine Formatierung. Der Dumper von ToolAcre wählt eine Darstellung, die auf die ursprüngliche Zeichenfolge zurücklesen kann, anstatt immer einen Stil zu erzwingen. Überprüfen Sie nach der Konvertierung einen mehrzeiligen Umgebungswert oder ein mehrzeiliges Zertifikat sorgfältig: Einrückungsfehler hier können den Empfang der Anwendung ändern.
Arbeitsbeispiel: Konvertieren einer Servicedefinition – ein verschachteltes JSON-Objekt in YAML, wobei jede Zitat- und Stilentscheidung mit Anmerkungen versehen ist
Für ein konkretes JSON-Objekt verwenden Sie services.web mit dem Bild "example/web:1", den Ports ["8080:80"] und den Umgebungsschlüsseln DEBUG="false", RELEASE="2026-09-28" und MESSAGE="line one\nline two". ToolAcre gibt das Bild aus: example/web:1 und eine Portliste; DEBUG wird in Anführungszeichen „false“ gesetzt, RELEASE in Anführungszeichen „2026-09-28“ und MESSAGE verwendet einen |- Block mit zwei eingerückten Zeilen. Jede Auswahl schützt die ursprünglichen Typen. Führen Sie die round-trip-Prüfung des Panels durch, bevor Sie es als compose.yaml speichern. Der Konverter kann nicht erkennen, ob das Bild vorhanden ist oder der Dienst gestartet wird.
Was dies nicht abdeckt – das Hinzufügen von Kommentaren, Ankern oder einer benutzerdefinierten Schlüsselreihenfolge, die nicht in der zu übertragenden JSON-Quelle vorhanden sind
JSON hat keine Kommentare, Anker oder Aliase, die beibehalten werden müssen: Ein Konverter kann sie nicht aus Eingaben wiederherstellen, die sie nie enthielten. Es kann auch keine Compose-spezifische Geheimnisverwaltung, eine benutzerdefinierte Schlüsselreihenfolge oder die Gültigkeit der Kubernetes-API-Version ableiten. Zwei YAML-Dateien können dieselben Daten serialisieren, jedoch unterschiedliche Leerzeichen- und Anführungszeichenstile verwenden. Überprüfen Sie das Ergebnis im Zielprogramm und vermeiden Sie das Einfügen echter API-Tokens in externe Konvertierungsdienste.
Fazit: Bei der Konvertierung handelt es sich um eine Neuserialisierung mit Regeln – und wie das Syntaxkonverter-Panel die YAML in Ihrem Browser erzeugt
Bei der Konvertierung handelt es sich um eine Analyse und erneute Serialisierung nach einer Reihe von Regeln, nicht um das Löschen von Satzzeichen. Syntaxkonverter führen diese Vorgänge in Ihrem Browser aus; Überprüfen Sie eine sensible Konfiguration lokal und führen Sie einen Roundtrip für ein kleines Testobjekt durch, bevor Sie die Methode auf eine größere Datei anwenden. Wenn ein in Anführungszeichen gesetzter Wert auf dem Rückweg seinen Typ ändert, ist die Formatierung nicht nur kosmetischer Natur und muss untersucht werden.