Zum Inhalt springen

JSON ↔ YAML Konverter · Encoding

JSON ↔ YAML konvertieren — und genau sehen, was sich ändert.

Jeder Konverter macht aus YAML JSON. Dieser sagt Ihnen zusätzlich, was es gekostet hat: die Kommentare, die er verworfen hat, die Anker, die er expandiert hat, das Datum, das er umgeschrieben hat, die Ganzzahl, die er gerundet hat. Echter YAML-1.2-Parser, vollständig in Ihrem Browser.

Läuft in Ihrem Browser — nichts, was Sie einfügen, verlässt diese Seite. Wie wir das belegen

Läuft in Ihrem Browser YAML 1.2 (js-yaml 4) Keine Anmeldung Aktualisiert am 30.07.2026

JSON ↔ YAML Konverter Playground

Examples
Direction

Every JSON file is already valid YAML — YAML 1.2 is a superset of JSON. The reverse is not true, which is why the direction is yours to pick.

Indent
Keys

Off by default: the order you wrote is kept, except for integer-like keys.

input.yaml input

Results update as you type — press Enter to run now.

Press Esc to release keyboard focus from the editor; /Ctrl + Enter converts and leaves the editor. Nothing you paste is uploaded.

An anchor (&name) marks a value so an alias (*name) can reuse it. JSON has neither, so every alias is written out as a full copy.

Result

Paste JSON or YAML above — or tap an example — to see the converted document here, plus every comment, anchor, timestamp and out-of-range number the conversion costs you.

Die Lücke

Stille Konverter — und Antworten, die vom Parser abhängen.

Das Dutzend werbefinanzierter Konverter an der Spitze der Suchergebnisse macht alle dasselbe: Sie geben das andere Format aus und sagen nichts. Ihre Kommentare sind weg. Ihre Anker wurden zu Kopien expandiert. Dieses unquotierte Datum ist jetzt eine Zeichenkette mit einer Zeitzone, die Sie nie geschrieben haben. Der 19-stelligen ID fehlen die letzten zwei Ziffern. Nichts auf der Seite erwähnt das — Sie erfahren es zum ersten Mal im Review. Oder in der Produktion.

Fragen Sie stattdessen einen KI-Assistenten, bekommen Sie ein zweites Problem: Die Antwort hängt davon ab, welche YAML-Version das Modell gelernt hat. verify: no ist unter YAML 1.2 die Zeichenkette "no" und unter YAML 1.1 der Boolean false — und beide Antworten werden mit gleicher Sicherheit behauptet. 0777 ist in der einen Version 777 und in der anderen 511, was bei einem Dateimodus den Unterschied zwischen einem kaputten und einem funktionierenden Deploy ausmacht.

Dieses Tool antwortet mit belegbarer Wahrheit statt mit einer Vermutung: Ein echter YAML-1.2-Parser läuft in Ihrem Tab, die Ausgabe ist deterministisch, und jeder verlustbehaftete Schritt wird mit Zeile oder Pfad benannt. Die Referenztabelle unten hält die Werte fest, bei denen sich die beiden YAML-Versionen widersprechen — damit Sie eine Behauptung in Sekunden prüfen können.

Arbeiten Sie an einer Pipeline? Der GitHub Actions Validator und der GitLab CI Validator prüfen das YAML selbst.

Die Pipeline

So funktioniert es.

Vier deterministische Schritte laufen, während Sie tippen — alle in Ihrem Browser-Tab, und jeder verlustbehaftete Schritt meldet sich selbst.

  1. Mit einem echten Parser parsen.

    js-yaml 4 auf dem YAML-1.2-Core-Schema, oder JSON.parse — niemals eine Regex. Wenn es nicht parst, bekommen Sie Zeile und Spalte, nicht „ungültig“.

  2. Normalisieren — und protokollieren.

    Ein Durchlauf wandelt Zeitstempel in ISO-8601-Zeichenketten, !!binary in Base64 und ±Infinity/NaN in null — jeweils mit einer Diagnose samt Pfad, an dem es passiert ist.

  3. Deterministisch ausgeben.

    Kein Zeilenumbruch-Falten und keine generierten Anker: dieselbe Eingabe erzeugt immer dieselben Bytes, und die Ausgabe wird genau so wieder gelesen, wie sie aussieht.

  4. Jeden Verlust melden.

    Kommentare, Anker, Merge-Keys, zusätzliche Dokumente, umsortierte numerische Schlüssel und gerundete Ganzzahlen stehen neben der Ausgabe — Sie entscheiden, ob die Konvertierung akzeptabel war.

Am Beispiel

Vier Verluste in sechs Zeilen.

Ein Kommentar, ein Anker, ein Merge-Key und ein unquotiertes Datum — das alltägliche YAML, das kein Konverter unversehrt hinübertragen kann.

Eingabe

Gewöhnliches YAML: ein Kommentar, ein Anker, ein Merge-Key, ein bloßes Datum.

release.yaml
# Rollout-Defaults, von beiden Jobs geteilt
defaults: &defaults
  retries: 2
  verify: no          # Zeichenkette in YAML 1.2, false in YAML 1.1
release:
  <<: *defaults
  date: 2024-01-15

Ausgabe, mit Belegzettel

Vier gemeldete Verluste: Der Kommentar ist weg, *defaults wurde kopiert, <<: wurde aufgelöst, und das Datum wurde zur ISO-8601-Zeichenkette. no blieb eine Zeichenkette — und wird gekennzeichnet, weil PyYAML es als false lesen würde.

release.json
{
  "defaults": { "retries": 2, "verify": "no" },
  "release": {
    "retries": 2,
    "verify": "no",
    "date": "2024-01-15T00:00:00.000Z"
  }
}

Referenz

Wo YAML 1.2 und YAML 1.1 sich widersprechen.

Dasselbe unquotierte Skalar, gelesen von diesem Tool (js-yaml 4, YAML-1.2-Core-Schema) und von einem YAML-1.1-Parser wie PyYAML. Wenn ein Werkzeug und eine Kollegin sich über einen Wert uneinig sind, steht die Antwort fast immer in dieser Tabelle.

Unquotierte Eingabe YAML 1.2 — dieses Tool YAML 1.1 — PyYAML
no "no" (Zeichenkette) false (Boolean) Das Norway-Problem. Gleiches gilt für yes / on / off / y / n.
true true (Boolean) true (Boolean) Nur bei true und false sind sich beide Versionen einig.
~ null null null, Null, NULL, ~ und ein leerer Wert sind in beiden Versionen null.
2024-01-15 2024-01-15T00:00:00.000Z 2024-01-15T00:00:00.000Z Beide lösen ein unquotiertes Datum zu einem Zeitstempel auf; JSON hat keinen Datumstyp, deshalb wird es als ISO-8601-Zeichenkette geschrieben.
0777 777 (dezimal) 511 (oktal) Der mit Abstand gefährlichste Widerspruch — Dateirechte ändern still ihre Bedeutung. Schreiben Sie 0o777.
0o777 511 "0o777" (Zeichenkette) Die explizite Oktalform von YAML 1.2 versteht YAML 1.1 überhaupt nicht.
1:30 "1:30" (Zeichenkette) 90 (Sexagesimal) YAML 1.1 las mit Doppelpunkt getrennte Zahlen zur Basis 60. YAML 1.2 hat das entfernt.
.inf Infinity Infinity JSON kennt kein Unendlich, also wird daraus null — mit einer Warnung.
9007199254740993 9007199254740992 9007199254740993 Kein YAML-Widerspruch, sondern ein JavaScript-Widerspruch: jenseits von 2^53 − 1 ist der exakte Wert verloren.

Quotieren beseitigt jeden Widerspruch in dieser Tabelle. Wenn ein Skalar in beiden Welten eine Zeichenkette bleiben muss, quotieren Sie es — und wenn dieses Tool YAML ausgibt, quotiert es sie für Sie.

Nächster Schritt

Prüfen Sie jetzt, ob das YAML selbst gültig ist.

Konvertieren beweist, dass ein Dokument parst; es beweist nicht, dass die Pipeline es akzeptiert. Lassen Sie Workflow-YAML durch den GitHub Actions Validator oder den GitLab CI Validator laufen, um die Schema- und Sicherheitsprobleme zu finden, die ein Konverter nicht sehen kann.

report.txt
YAML → JSON · 2 docs · 31 keys · 1 warning · 3 notes
note:    comments were dropped
note:    1 alias expanded into a copy
note:    "no" stayed a string (YAML 1.1 reads false)
warning: 9007199254740993 → 9007199254740992

FAQ

Fragen, beantwortet.

Tippen Sie auf eine Frage, um die Antwort aufzuklappen.

Er konvertiert JSON zu YAML oder YAML zu JSON in Ihrem Browser — und sagt Ihnen anschließend, was die Konvertierung gekostet hat. Kommentare, Anker und Aliase, Merge-Keys, Zeitstempel, Multi-Dokument-Streams und Ganzzahlen, die JavaScript nicht exakt darstellen kann, überleben den Weg nicht. Jeder einzelne dieser Verluste wird als benannte Warnung oder Notiz neben der Ausgabe gemeldet, statt stillschweigend zu verschwinden.

YAML 1.2, über js-yaml 4 und dessen Standard-Schema (core) — derselbe Reader, den die meisten modernen JavaScript-Werkzeuge nutzen. Das ist relevant, weil YAML 1.2 die booleschen Schreibweisen von YAML 1.1 abgeschafft hat: no, yes, on und off sind hier einfache Zeichenketten, und nur true und false sind Booleans. PyYAML, Rubys Psych und älteres Kubernetes-Tooling folgen weiterhin YAML 1.1 — die Referenztabelle auf dieser Seite hält deshalb genau die Werte fest, bei denen sich die beiden Versionen widersprechen.

Ein YAML-1.1-Parser liest das unquotierte Skalar NO als den Boolean false — eine Länderliste mit dem ISO-Code Norwegens wird damit zu einer Liste, die false enthält. Dieselbe Falle erwischt ON, OFF, YES, Y und N. Dieser Konverter folgt YAML 1.2, dort bleiben diese Werte Zeichenketten — und jeder gefundene Fall wird gekennzeichnet, damit Sie wissen, dass ein YAML-1.1-Werkzeug weiter unten in der Kette anderer Meinung wäre. In der anderen Richtung werden sie beim Schreiben quotiert („NO“ wird zu 'NO'), und genau das macht die Datei sicher für PyYAML.

Nein. Parsing, Konvertierung und Meldung laufen zu 100 % clientseitig in Ihrem Tab — es gibt keinen Server, kein Konto und kein Logging. Sie können Produktions-Manifeste, CI-Konfigurationen und Dateien mit internen Hostnamen oder Secrets bedenkenlos einfügen.

Sie gehen verloren — und das Tool sagt es. JSON hat keine Kommentar-Syntax, und Kommentare über einen Roundtrip zu erhalten würde einen kommentar-bewussten Syntaxbaum statt eines Wert-Parsers erfordern; das ist hier ein bewusstes Nicht-Ziel. Wenn Kommentare erhalten bleiben müssen, bearbeiten Sie das YAML direkt, anstatt es über JSON zu führen.

Sie werden an der Stelle expandiert. Ein Anker (&defaults) markiert einen Wert, ein Alias (*defaults) verwendet ihn erneut. JSON hat beides nicht, also wird jeder Alias zu einer vollständigen Kopie des verankerten Werts — das Dokument bedeutet dasselbe, ist aber länger, und die gemeinsame Nutzung ist weg. Merge-Keys (<<:) werden genauso expandiert, die geerbten Schlüssel werden vollständig ausgeschrieben. Ein rekursiver Alias, bei dem ein Knoten sich selbst enthält, lässt sich in JSON überhaupt nicht darstellen und wird als Fehler gemeldet, statt die Seite abstürzen zu lassen.

JavaScript hält Zahlen als IEEE-754-Doubles, deshalb lassen sich Ganzzahlen jenseits von 2^53 − 1 (9007199254740991) nicht exakt darstellen. Aus 9007199254740993 wird 9007199254740992, sobald sie geparst wird — durch dieses Tool, durch JSON.parse in Ihrem eigenen Code und durch jeden anderen browserbasierten Konverter. Der Unterschied ist, dass dieses Tool warnt und die ursprünglichen Ziffern zitiert. Wenn der Wert eine ID und keine Menge ist, behalten Sie ihn als quotierte Zeichenkette.

Fügen Sie das Manifest ein, lassen Sie die Richtung auf YAML → JSON und kopieren Sie die Ausgabe. kubectl patch --type=merge -p erwartet ein JSON-Dokument. Ein Multi-Dokument-Manifest (mehrere Ressourcen, getrennt durch ---) wird hier zu einem JSON-Array, das kubectl als Patch nicht akzeptiert — trennen Sie es und konvertieren Sie eine Ressource nach der anderen. Mengenangaben wie 256Mi und 500m bleiben in beiden Formaten Zeichenketten, genau wie Kubernetes es erwartet.

Nicht, solange es die Kurzform-Tags verwendet. !Ref, !GetAtt und !Sub sind CloudFormation-spezifische YAML-Tags und nicht Teil des Standard-Schemas, deshalb weist ein standardkonformer Parser sie ab — dieses Tool nennt genau, an welchem Tag es gescheitert ist und wo. Schreiben Sie sie in der Langform (Ref: BucketName statt !Ref BucketName), dann lässt sich das Template konvertieren.

Ja, mit einer unvermeidbaren Ausnahme. Die Schlüsselreihenfolge bleibt standardmäßig erhalten, und „Sort keys“ sortiert jede Ebene, wenn Sie einen stabilen Diff möchten. Die Ausnahme sind ganzzahlartige Schlüssel: JavaScript-Objekte listen Schlüssel wie „1“ und „2“ immer zuerst auf, in aufsteigender numerischer Reihenfolge, vor jedem anderen Schlüssel — unabhängig davon, in welcher Reihenfolge sie geschrieben wurden und ob sie quotiert waren. Das Tool warnt, wenn Ihr Dokument solche Schlüssel enthält.

More free, private DevOps tools.

Der JSON ↔ YAML Konverter ist eines der Werkzeuge in OpsCanopy — einem wachsenden Blätterdach browserbasierter Validatoren, Konverter und Tester, die niemals einen Server berühren.

39 kostenlose Tools, jedes einzelne offlinefähig — opscanopy.com funktioniert ohne Registrierung, und nichts wird hochgeladen.

Verwandt: der GitHub Actions Validator und der GitLab CI Validator zum Prüfen von Pipeline-YAML, der Docker Run to Compose-Konverter, um aus einem Befehl YAML zu machen, der Alertmanager Route Tester zum Durchlaufen eines Routing-Baums, und der Base64 Encoder / Decoder, wenn die Nutzlast kodiert statt strukturiert ist — oder durchsuchen Sie das vollständige Tools-Verzeichnis.

Ohne Gewähr zur Verfügung gestellt; prüfen Sie kritische Konfiguration immer gegen das Werkzeug, das sie später konsumiert. OpsCanopy ist kostenlos und offen.