Command Palette

Search for a command to run...

YAML in JSON: Konvertieren Sie Manifests, erstellen Sie Dateien und Pipelines, ohne Daten zu verlieren

YAML in JSON: Konvertieren Sie Manifests, erstellen Sie Dateien und Pipelines, ohne Daten zu verlieren

T
Toolz Team
|Aug 23, 2026|17 min lesen

Teil der Sammlung Datenwerkzeuge

Ich habe letztes Jahr einen Nachmittag damit verbracht, eine Helm-Werte-Datei zu debuggen, von der ein Kollege geschworen hat, dass sie richtig sei Jeder Schlüssel sah richtig aus Der Dienst weigerte sich zu startenDer Täter bestand aus vier Zeichen: NO Als Ländercode, nicht zitiert, in einer Liste von Regionen Der YAML-Parser las es als boolesch falseDie gerenderte Vorlage false In einen Header, und die Anfrage wurde stromabwärts mit einer Fehlermeldung abgelehnt, die weder YAML noch Norwegen erwähnte. Dieser Fehler ist berühmt genug, um einen Namen zu haben - das Norwegen-Problem - und er gehört nur zu einer Familie von Überraschungen, die in einem Format warten, das die meisten von uns als "JSON mit schönerer Leertaste behandeln."

tl; dr: der YAML-zu-JSON-Konverter Analysiert ein YAML-Dokument und druckt das äquivalente JSON, löst Anker, Aliase, Zusammenführungsschlüssel und Blockskalare auf dem Weg auf. Wenn Sie Ihre Konfiguration als JSON sehen, wird Ihnen genau angezeigt, was der Parser für Ihre Werte entschieden hat - welche Typen er abgeleitet hat, welche Referenzen er erweitert hat - bevor diese Interpretation einen Cluster erreicht. Es läuft vollständig in Ihrem Browser.

Die Konvertierung von YAML in JSON ist nicht nur eine Formatänderung Es ist die schnellste verfügbare Prüfung dessen, was Ihre Konfiguration tatsächlich enthält. JSON hat keine Kommentare, keine Anker, keine implizite Eingabe, die über die Syntax-Angaben hinausgeht. Daher ist die JSON-Ansicht eines Manifests die aufgelöste, eindeutige Version davon. Dieser Leitfaden behandelt die Zuordnung von YAML zu JSON, den Typ und das Referenzverhalten, die echte Vorfälle verursachen, und wie Sie den Konverter verwenden, wenn Sie eine Konfiguration debuggen, Skripte gegen ein Manifest erstellen oder eine Testvorrichtung schreiben.

Was macht die Konvertierung von YAML in JSON eigentlich?

Die Beziehung ist definiert, nicht nebensächlich: die YAML 1.2-Spezifikation Gibt an, dass YAML eine Obermenge von JSON ist, somit ist jedes JSON-Dokument bereits gültig YAML. YAML und JSON beschreiben die gleichen drei Dinge: Abbildungen von Schlüsseln auf Werte, geordnete Folgen, und Skalare, Conversion läuft das YAML-Dokument und emittiert jedes Konstrukt in seinem JSON-Äquivalent Eine Blockzuordnung wird zum Objekt Eine Blockfolge wird zu einem Array Ein Skalar wird zu einer Zeichenfolge, Zahl, boolesch oder null, je nachdem, wie das YAML-Kernschema es auflöst.

Der Strukturteil ist uninteressant, weil mechanisch Der interessante Teil ist alles, was YAML ausdrücken kann, was JSON nicht kann, denn dort muss der Konverter in Ihrem Namen eine Entscheidung treffen:

YAML-funktion Was JSON bekommt Warum es wichtig ist
Kommentare (# ...) Abgeworfen JSON hat keine Kommentar-Syntax; Die Dokumentation in Ihrer Konfiguration ist nicht erhalten
Anker und Aliase (&base, *base) Erweiterte Kopien JSON hat keine Referenzsyntax, daher werden freigegebene Blöcke dupliziert
Schlüssel zusammenführen (<<: *base) In das Objekt abgeflacht Explizite Schlüssel überschreiben zusammengeführte Schlüssel gemäß der Merge-Key-Spezifikation
Blockskalare (` , &gt;`) Eine einzelne Saite mit Fluchten
Mehrere Dokumente (---) Eine Reihe von Dokumenten Ein Kubernetes-Bundle wird zu einem JSON-Array, einem Element pro Ressource
Implizite Typisierung Aufgelöste Typen Nicht zitiert 8080 Zahl wird, true Ein boolescher null a null

Diese letzte Zeile ist diejenige, auf die es sich zu starren lohnt JSON zwingt jeden Wert, seinen Typ durch Syntax zu deklarieren: Anführungszeichen bedeuten Zeichenfolge, nackte Ziffern bedeuten Zahl YAML gibt aus der Form des Textes Typ ab Konvertieren in JSON macht die Schlussfolgerung sichtbar Wenn Sie mit einer Versionszeichenfolge gerechnet haben und JSON Ihnen zeigt 1.1 Wo die YAML sagte 1.10, Sie haben einen Fehler gefunden, den Sie sonst versendet hätten.

Warum YAML&#39;s implizites Tippen echte Ausfälle verursacht

Das Kernschema YAML 1.2 löst einen nicht zitierten Skalar nach Mustern auf Ziffern werden zu ganzen Ziffern Ziffern mit Dezimalpunkt oder Exponent werden zu Floats. true und false Booleschen werden. null und ~ Null werden Alles andere ist eine Zeichenfolge.

Das klingt aufgeräumt, bis man die Werte erfüllt, die wie eine Art aussehen und als eine andere gemeint sind:

  • Ports und IDs. port: 08080 Ist nicht die Zahl 8080. Eine führende Null macht sie zu einer ungültigen ganzen Zahl unter dem Kernschema, daher geben die meisten Parser die Zeichenfolge zurück, und einige ältere interpretieren sie als oktal Postleitzahlen, Telefonnummern und Konto-IDs mit führenden Nullen haben das gleiche Problem.
  • Versionen. version: 1.10 Schwimmer ist 1.1. Die nachlaufende Null ist weg, und kein Parser warnt Sie Vergleichen Sie das mit einem Container-Tag und die Suche schlägt fehl.
  • Länder - und Sprachcodes. Unter YAML 1.1 - dem PyYAML standardmäßig immer noch folgt, zusammen mit vielen Ruby- und älteren Java-Tools - y, n, yes, no, on, und off Booleschen sind. NO, ON, und NA Sind in der realen Welt vollkommen gewöhnliche Zwei-Buchstaben-Codes.
  • Zeiten und Sexagesimale. YAML 1.1 parst auch 12:30 Als Basis-60-Zahl, die 750. Kronenartige oder dauerartige Zeichenfolgen können in ganze Zahlen verschwinden.

Jedes davon ist eine stille Datenbeschädigung, kein Analysefehler Das Dokument ist gültig, die Pipeline ist grün und der Wert ist falsch. Der Konverter&#39;s Fäden halten Für genau diese Untersuchungsklasse gibt es die Möglichkeit: Schalten Sie sie ein und jeder einfache Skalar kommt als String zurück, so können Sie die beiden Konvertierungen nebeneinander vergleichen und genau sehen, welche Werte der Parser neu interpretierte Was auch immer der JSON ohne diese Option anzeigt, ist das, was Ihr Produktionsparser heute höchstwahrscheinlich macht.

Der Fix in Ihrem Quell-YAML ist immer derselbe: Zitieren Sie alles, dessen Bedeutung textuell ist. port: "8080", version: "1.10", region: "NO". Zitate kosten nichts und entfernen die gesamte Kategorie von Bug Wenn Sie YAML aus JSON generieren, anstatt es zu schreiben, wird die JSON-zu-YAML-Konverter Wendet an, dass das automatische Zitieren für mehrdeutige Werte.

Wie Anker, Aliase und Zusammenführungsschlüssel konvertieren

Anker sind YAML&#39; s Antwort auf WiederholungSie markieren einen Knoten mit &nameDann beziehen Sie sich später darauf *name:

defaults: &defaults
  restartPolicy: Always
  terminationGracePeriodSeconds: 30

web:
  <<: *defaults
  replicas: 3

worker:
  <<: *defaults
  terminationGracePeriodSeconds: 120

JSON hat keine Möglichkeit, & quot; den gleichen Wert wie drüben zu sagen.&quot; also erweitert der Konverter jede Referenz zu einer vollständigen Kopie Die Ausgabe oben wird zu drei Objekten, die jeweils ihre eigenen tragen restartPolicy‘und der JSON ist länger als der YAML, der ihn produziert hat Das ist kein Fehler bei der Konvertierung - es ist das, was der YAML bedeutet, ausgeschrieben.

Die Zusammenführungs-Taste << Einen eigenen Hinweis verdient, weil seine Vorrangregel leicht rückwärts zu bekommen ist Schlüssel, die explizit im Child Mapping geschrieben wurden, gewinnen über Schlüssel, die durch die Zusammenführung gezogen wurden Im Beispiel worker Am Ende hat man eine Schonfrist von 120, nicht 30, unabhängig davon, ob die Zusammenführungszeile über oder unter dem expliziten Schlüssel erscheint Der Konverter implementiert diese Regel, also zeigt Ihnen das JSON die effektive Post-Merge-Konfiguration an - was normalerweise das ist, was Sie eigentlich prüfen wollten.

Daraus folgen zwei praktische Anwendungen Erstens, wenn eine Config starke Verankerung verwendet, ist die Konvertierung in JSON die schnellste Möglichkeit, & quot; auf was löst diese Umgebung eigentlich auf? & quot; ohne die Bereitstellung auszuführen Zweitens, wenn ein Alias keinen passenden Anker hat - ein häufiges Ergebnis der Aufteilung einer großen Datei in mehrere - meldet der Konverter ihn als Fehler mit der Zeilennummer, anstatt stillschweigend eine Null zu erzeugen.

Wie Blockskalare konvertieren

YAML hat zwei Möglichkeiten, mehrzeiligen Text einzubetten, und sie verhalten sich unterschiedlich:

  • Literal (|) Hält jeden Zeilenumbruch genau so, wie geschrieben Es für Shell-Skripte, PEM-Zertifikate, SQL und alles, was auf Leerzeichen reagiert, verwenden.
  • Gefaltet (>) Folgezeilen mit einem einzigen Leerzeichen verbindet und eine leere Zeile als Absatzumbruch behandelt Verwenden Sie sie für Prosa, die Sie in die Quelldatei eingepackt, aber im Wert zusammengefügt haben möchten.

Beide akzeptieren einen Chomping-Indikator, der nachlaufende Zeilen steuert. Die Standardeinstellung, Clipping genannt, behält genau eine nachlaufende Zeilenvorlage. Ein Minus (|-) alle nachlaufenden Zeilen abstreifen A plus (|+) behält jeden von ihnen.

Bei JSON kollabiert all dies in einer Saite mit \n Fluchten Das ist ein weiterer Grund, warum die JSON-Sicht nützlich ist: Sie ist eindeutig A | Block, dessen letzte Zeile versehentlich eingerückt wurde, oder ein > Block, der zwei Zeilen, die Sie getrennt halten wollten, faltenförmig verband, ist in JSON offensichtlich und in YAML nahezu unsichtbar. Der Konverter verarbeitet auch den Fall, der naive Implementierungen erfasst - a # Charakter innerhalb eines wörtlichen Blocks ist Inhalt, kein Kommentar, was in dem Moment wichtig ist, in dem Sie ein Shell-Skript einbetten, das mit einem Shebang beginnt.

So verwenden Sie den YAML to JSON Converter

Schritt 1: Fügen Sie das Dokument ein

Fügen Sie beliebige YAML in das Eingabefeld ein: ein Kubernetes-Manifest, a docker-compose.ymlEin GitHub Actions-Workflow, ein Ansible-Playbook, a .gitlab-ci.ymloder eine Anwendungskonfiguration. Multidokumentdateien mit --- Trennzeichen sind in Ordnung - jedes Dokument wird unabhängig analysiert Klicken Sie Probe laden Um von einer realistischen Bereitstellung auszugehen, die verschachtelte Karten, Sequenzen, eine leere Sammlung und einen wörtlichen Blockskalar ausübt.

Das Einzige, was nicht analysiert wird, ist die Einrückung mit Tabulatorzeichen. YAML verbietet Tabulatoren vollständig, und der Konverter sagt dies mit der verletzenden Zeilennummer, anstatt zu raten. Editoren, die eine Registerkarte auf Enter einfügen, sind die übliche Quelle; die meisten haben eine & quot; Einrückung in spaces&quot; Befehl konvertieren, der die gesamte Datei auf einmal fixiert.

Schritt 2: Wählen Sie die Ausgabeform

Pick 2 Räume, 4 Felder, oder Minifiziert. Minifiziert ist, was Sie wollen, wenn Sie das Ergebnis in eine einfügen wollen curl Körper oder eine Umgebungsvariable Eingedrückt ist das, was man will, wenn ein Mensch es lesen muss.

Tasten sortieren Schreibt die Objekttasten alphabetisch auf jeder Ebene umDas ist unschätzbar wertvoll beim Vergleich zweier Versionen einer Config: Zwei Dateien, die sich nur in der Tastenreihenfolge unterscheiden, erzeugen identische sortierte JSON, so dass ein Diff nur echte Änderungen anzeigt Beide Ausgaben in die einspeisen json diff Werkzeug und man bekommt einen genauen Strukturvergleich statt eines zeilenweisen.

Fäden halten Deaktiviert den skalaren Zwang, wie oben beschrieben Verwenden Sie ihn, wenn Sie den Rohtext jedes Wertes sehen möchten, oder wenn ein nachgeschalteter Verbraucher sowieso alles als Zeichenfolge behandelt.

Schritt 3: Konvertieren und Lesen der Fehler

knips umwandeln. Wenn das Dokument gut geformt ist, erscheint unten das JSON zusammen mit der Zeilenzahl, der Anzahl der Schlüssel, der Bytegröße und - für Streams mit mehreren Dokumenten - der Anzahl der gefundenen Dokumente.

Wenn es nicht gut geformt ist, benennt der Fehler die Zeile Die Nachrichten decken die Fehler ab, die in der Praxis tatsächlich passieren: Tabs, die für die Einrückung verwendet werden, eine Zeile, die inkonsistent mit ihren Geschwistern eingerückt ist, eine nicht terminierte zitierte Zeichenfolge, ein Alias ohne Anker, eine Zusammenführungstaste, die auf etwas zeigt, das keine Zuordnung ist Eine Zeilennummer verwandelt eine fünfminütige Jagd in einen Fünf-Sekunden-Fix.

Schritt 4: Kopieren, herunterladen oder weitermachen

Kopieren Sie das JSON in Ihre Zwischenablage oder laden Sie es als herunter .json Datei. von dort aus sind die üblichen nächsten Schritte das hübsche Drucken und Validieren mit dem JSON-FormaterGenerieren von Typen für einen Konfigurationslader mit json zu typeScriptoder Ableitung eines Vertrags zur CI-Validierung mit dem JSON-Schema-Generatordrohen

Echte Workflows, die das passt

Debuggen eines Manifests, das & quot; sieht fein aus&quot;

Wenn sich eine Bereitstellung unerwartet verhält und die YAML richtig liest, konvertieren Sie sie Neun von zehn Mal zeigt die JSON das Problem sofort: ein Wert, der boolesch wurde, ein verschachtelter Schlüssel, der eine Ebene flacher ist als vorgesehen, weil ein verirrter Raum, ein Anker, der sich zu etwas Schalem erweiterte Die JSON-Ansicht entfernt die Unklarheit im Leerraum, die den Fehler unsichtbar gemacht hat.

Skript gegen Konfiguration

Shell - und Node-Skripte verarbeiten JSON nativ; YAML braucht eine Abhängigkeit Wenn ich jedes Bild-Tag aus einem Bündel von Manifesten ziehen muss, konvertiere ich zuerst in JSON und pipere durch jq Schneller ist, als einem Wegwerfskript eine YAML-Bibliothek hinzuzufügen Der Konverter&#39; s Multi-Dokument-Unterstützung zählt hier - ein Kubernetes-Bundle aus sechs Ressourcen wird zu einem JSON-Array, das Sie iterieren können.

Bauprüfkörper

Integrationstests benötigen oft ein Config-Objekt statt einer Config-Datei, durch die Konvertierung des realen Manifests in JSON erhalten Sie eine Vorrichtung, die garantiert zur Produktionsform passt, was ein weitaus besserer Ausgangspunkt ist als ein Objekt, das Sie aus dem Speicher eingegeben haben Koppeln Sie es mit json zu typeScript und Ihre Vorrichtung wird mit Typen geliefert.

Überprüfung der Konfiguration in einer Pull-Anfrage

Streuungen stark verankerter YAML sind schwer zu lesen, da ein einzeiliger Wechsel zu einem Anker jeden Verbraucher lautlos verändert. Konvertieren beider Versionen mit Tasten sortieren Aktiviert und Diffusion des JSON zeigt den wahren Explosionsradius: Jeder aufgelöste Wert, der sich geändert hat, nicht nur die Zeile, die bearbeitet wurde.

Migration zwischen Werkzeugen

Viele Plattformen akzeptieren JSON, aber nicht YAML, oder umgekehrt Konvertieren ist normalerweise die ganze Migration Wenn Sie in die andere Richtung zurückgehen müssen - JSON in der Hand, YAML erforderlich - die JSON-zu-YAML-Konverter Schließt die Schleife, und die YAML-Validator Ergebnisparsen bestätigt, bevor Sie es festlegen.

YAML und JSON verglichen

Dimension Zank json
Kommentar ja kein
Menschliche Bearbeitung Einrückungsbasiert, einfach zu überfliegen Satzzeichenlastig, wortreich
Maschinenparsen Langsamere, größere Parser, mehr Randhüllen Überall schnelle, winzige Parser
Typus-Inferenz Implizit, schemaabhängig Ausdrücklich aus der Syntax
Bezüge Anker, Aliase, Zusammenführungsschlüssel keine
Mehrere Dokumente pro Datei Ja, über --- kein
Typisches Zuhause Konfigurieren von Dateien, CI-Pipelines, Manifesten APIs, Datenaustausch, Speicherung

YAML 1.2 ist formal eine Obermenge von JSON, somit ist jedes JSON-Dokument bereits gültiges YAML Umgekehrt ist es nicht richtig, weshalb die Konvertierung von YAML in JSON eine verlustbehaftete Operation in genau eine Richtung ist: Kommentare und Referenzstruktur werden verworfen, während Daten erhalten bleiben, wenn Ihr YAML Kommentare hat, die Ihnen wichtig sind, behalten Sie das YAML als Quelle der Wahrheit und behandeln Sie das JSON als abgeleitetes Artefakt.

Privatsphäre: warum das in Ihrem Browser läuft

Config-Dateien gehören zu den sensibelsten Klartext-Artefakten, die ein Team hat Sie tragen interne Hostnamen, Clusternamen, Registrypfade, Dienstkonten, Datenbank-Identifikatoren, und - trotz aller & #39; besten Absichten - die gelegentlichen Anmeldeinformationen, die es noch nicht in einen geheimen Manager geschafft haben.

Der Konverter ist clientseitiges JavaScript Ihr Dokument wird in der Seite geparst, das JSON wird in der Seite produziert, und keine Anfrage trägt Ihre Daten irgendwo Laden Sie das Tool einmal und es arbeitet weiter mit dem Netzwerk aus, was eine vernünftige Gewohnheit für alles ist, was Sie ein Manifest einfügen Dies ist das gleiche Prinzip hinter jedem Tool auf der Website, und die Begründung wird im Leitfaden auf dargelegt Datenschutz in Online-Tools. Wenn Sie ein Allzweck-Browser-Toolkit zusammenstellen, wird die Webentwickler-Toolkit Ratgeber behandelt, was sonst noch hineingehört.

Wissenswerte Einschränkungen

Kein Konverter, der in eine Browser-Registerkarte passt, implementiert jede Ecke der YAML-Spezifikation, und es ist nützlicher, sich genau auf die Kanten zu beziehen, als anzudeuten, dass es keine gibt.

Komplexe Zuordnungsschlüssel - die explizite ? key Form, bei der der Schlüssel selbst eine Sequenz oder Abbildung ist - werden nicht unterstützt, da JSON-Objektschlüssel Zeichenfolgen sein müssen Type-Tags wie z !!binary oder Brauch !MyType Direktiven nicht ausgelegt werden; der Wert kommt als Text durch Die speziellen Floatwerte .inf, -.inf, und .nan Als Saiten erhalten bleiben, da JSON kein wörtliches Wort für sie hat und stillschweigend zu konvertiert null Mehr Informationen verlieren würde, als sie spart Richtlinien wie %YAML 1.2 Ignoriert werden, anstatt darauf zu reagieren.

Keine davon erscheint in gewöhnlichen Kubernetes, Compose, Actions, oder Ansible Dateien Wenn Sie eine treffen, arbeiten Sie mit einem Dokument, das für eine bestimmte Sprache geschrieben wurde&#39; s YAML Bibliothek, und dass library&#39; eigener Dumper das richtige Werkzeug ist.

FAQ

Wie konvertiere ich YAML in JSON online?

Fügen Sie Ihre YAML in das Eingabefeld ein und klicken Sie auf Konvertieren. Der Parser liest das Dokument, löst Anker und blockiert Skalare und druckt formatierte JSON, die Sie kopieren oder herunterladen können. Alles passiert in Ihrem Browser, daher wird keine Datei hochgeladen.

Ist JSON eine Teilmenge von YAML?

Ja. YAML 1.2 wurde als strenge Obermenge von JSON neu definiert, sodass jedes gültige JSON-Dokument auch gültiges YAML ist. Das Gegenteil ist nicht der Fall: YAML fügt Kommentare, Anker, Blockskalare, mehrere Dokumente pro Datei und nicht-String-Schlüssel hinzu, von denen kein JSON direkt ausdrücken kann.

Wie werden YAML-Anker und Aliase in JSON konvertiert?

JSON hat keine Referenzsyntax, daher wird jeder Alias zu einer vollständigen Kopie des Wertes erweitert, den sein Anker definiert Eine Konfiguration, die einen Standardblock dreimal wiederverwendet, erzeugt drei identische JSON-Objekte Die Ausgabe ist daher größer als die YAML-Quelle, aber semantisch identisch.

Was passiert mit der Zusammenführung von Tasten wie der doppelten Winkelhalterung?

Das referenzierte Mapping wird in das aktuelle Objekt zusammengeführt. Die explizit in der Child-Mapping geschriebenen Schlüssel gewinnen zusammengeführte Schlüssel, die dem Verhalten der YAML-Merge-Key-Spezifikation und der Kubernetes- und Ansible-Tools entsprechen.

Warum ist mein YAML mit einem Tabs-Fehler gescheitert?

YAML verbietet Tabulatorzeichen für die Einrückung - die Spezifikation erlaubt nur Leerzeichen Editoren, die Tabulatoren auf Enter einfügen, sind die übliche Ursache Konvertieren Sie die führenden Tabulatoren in Leerzeichen, was die meisten Editoren für eine ganze Datei auf einmal tun können, und das Dokument wird analysiert.

Kann ich eine YAML-Datei mit mehreren Dokumenten mit Dokumententrennzeichen konvertieren?

Ja. Jedes Dokument zwischen den Trennmarkierungen wird unabhängig voneinander analysiert und das Ergebnis ist ein JSON-Array mit einem Element pro Dokument, in Quellreihenfolge Eine Einzeldokumentdatei gibt das Objekt selbst zurück, kein Einelement-Array.

Behalten Portnummern und Versionszeichenfolgen ihren Typ?

Einfache Skalare werden durch das YAML-Kernschema aufgelöst, so wird ein nicht zitierter 8080 zur Zahl 8080 und ein nicht zitierter 1.10 zu 1.1. Zitieren Sie den Wert in Ihrem YAML, um es als Zeichenfolge zu halten, oder schalten Sie die Option Strings beibehalten ein, um jeglichen skalaren Zwang auszuschalten.

Wie konvertieren wörtliche und gefaltete Blockskalare?

Ein wörtlicher Block behält jede Zeilenumbrüche, so wird er zu einer JSON-Zeichenfolge mit entwichenen Zeilenumbrüchen Ein gefalteter Block verbindet aufeinanderfolgende Zeilen mit einem Leerzeichen und behandelt Leerzeichen als Absatzumbrüche Chomping-Indikatoren werden respektiert: ein Minus lässt die nachlaufende Zeilenumbrüche fallen und ein Plus behält jede nachlaufende Leerzeile.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!