Was ist JSON ↔ YAML-Konvertierung?
JSON (JavaScript Object Notation, RFC 8259) ist ein striktes, von geschweiften Klammern begrenztes Textformat für strukturierte Daten; YAML (YAML Ain't Markup Language, Version 1.2) ist eine Obermenge von JSON, die für dasselbe Wertemodell Einrückung, Zeilenumbrüche und lesbare Syntax verwendet. Die Konvertierung zwischen beiden erlaubt es, dieselbe Konfiguration zwischen einer maschinenfreundlichen Form (JSON für APIs, Schemavalidierung, programmatische Transformationen) und einer menschenfreundlichen Form (YAML für Code-Reviews, Kubernetes-Manifeste, GitHub-Actions-Workflows) zu pivotieren, ohne einen einzigen Schlüssel neu zu tippen.
Wie funktioniert die JSON ↔ YAML-Konvertierung?
Jede Konvertierung läuft lokal in deinem Browser mit der gebündelten Bibliothek js-yaml (MIT, Version 4.1.0). Die wichtigsten Schritte sind:
- Der Modus-Schalter (Automatische Erkennung / JSON → YAML / YAML → JSON) entscheidet, welche Pipeline läuft. Im Modus Automatische Erkennung wählt das erste nicht-leere Zeichen der Eingabe die Richtung —
{oder[bedeutet JSON; alles andere bedeutet YAML. - JSON → YAML:
JSON.parsevalidiert die Eingabe und erzeugt einen JavaScript-Wert;jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false })schreibt die YAML-1.2-Form. Mit aktiviertem Multi-Dokument wird ein Eingabe-Array ein Element pro Dokument ausgegeben und mit----Trennern verbunden. - YAML → JSON:
jsyaml.loadAllparst jedes Dokument der Eingabe (verarbeitet----Trenner automatisch) in ein Array; Single-Dokument-Eingaben werden ausgepackt, sodass die JSON-Ausgabe das Dokument selbst ist und nicht ein Array mit einem Element. - Einrückung (2 oder 4 Leerzeichen) und Hübsch-Ausgabe sind konfigurierbar. Bei deaktivierter Hübsch-Ausgabe wird über
JSON.stringify(value)ohne Leerzeichen minimiertes JSON ausgegeben. - Die Ausgabe wird in das schreibgeschützte Textfeld geschrieben. Bei YAML-Parse-Fehlern enthält die Fehlermeldung die 1-indexierte Zeile und Spalte aus
e.markvonjs-yaml, damit du direkt zum Bug springen kannst.
Warum JSON und YAML mit diesem Tool konvertieren?
- Datenschutz: Jeder Parse-, Transformations- und Ausgabelauf passiert in deinem Browser. Die Daten — einschließlich Kubernetes-Secrets, signierter JWTs und proprietärer Konfigurationen — erreichen unsere Server nie.
- Multi-Dokument-YAML:
jsyaml.loadAllerkennt----Trenner und liefert ein Array von Dokumenten, das der Konverter für Einzeldokumentfälle auspackt oder für Multi-Dokument-Fälle als JSON-Array beibehält. - Anker und Aliase aufgelöst: Der Mechanismus
&anchor/*aliasvon YAML wird vom Standardschema vonjs-yamlverarbeitet. Ein einmal definierter und zweimal referenzierter Wert läuft hin und zurück zu einem JSON-Objekt, in dem alle Referenzen gleiche Werte enthalten. - Kein CDN, keine Telemetrie: Die Bibliothek
js-yaml.min.jswird aus derselben Origin wie die Seite ausgeliefert, sodass das Tool offline, hinter Unternehmens-Proxies und in air-gapped-Umgebungen funktioniert.
Was sind typische Anwendungsfälle der JSON ↔ YAML-Konvertierung?
Das Pivotieren zwischen JSON und YAML taucht in DevOps, Plattform-Engineering und API-Tooling überall auf:
- Kubernetes-Manifeste: Ein YAML
Deployment,ConfigMapoderHelmReleasein JSON konvertieren, damit ein interner Policy-Validator (Joi, Ajv, OPA Rego) es programmatisch linten kann, und dann wieder zurück nach YAML für den Cluster-Apply. - CI/CD-Workflows: Eine
workflow.ymlfür GitHub Actions durch JSON drehen, damit ein Code-Generator Matrix oder Job-Abhängigkeiten umschreibt, und dann das bereinigte YAML für den PR ausgeben. - OpenAPI-Spezifikationen: Eine
openapi.jsonaus der auto-generierten Backend-Dokumentation einfügen und inopenapi.yamlfür die menschlich gepflegte Referenz im Repo umwandeln.
Wie sieht ein Round-Trip-Beispiel JSON ↔ YAML aus?
Wenn du {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} einfügst und im Modus JSON → YAML auf KONVERTIEREN drückst, entstehen acht Zeilen eingerücktes YAML mit apiVersion: apps/v1 in der ersten Zeile. Wenn du dieses YAML im Modus YAML → JSON mit aktivierter Hübsch-Ausgabe wieder einspielst, erhältst du nach einem stabilen JSON.stringify(value, null, 2) das ursprüngliche Objekt Byte für Byte zurück, wobei die Schlüsselreihenfolge erhalten bleibt, weil das Standardschema von js-yaml in beide Richtungen die Einfügereihenfolge respektiert.
Läuft dieser JSON ↔ YAML-Konverter komplett in meinem Browser?
Ja. Jeder Parse-, Transformations- und Ausgabelauf erfolgt lokal als JavaScript in deinem Browser-Tab. Die gebündelte Bibliothek js-yaml wird aus derselben Origin wie die Seite ausgeliefert — kein CDN, kein fetch, kein XMLHttpRequest, kein navigator.sendBeacon auf die Eingabe. Das Tool funktioniert auch offline, sobald die Seite geladen ist, denn es ist ein statisches HTML/CSS/JS-Bundle, bei dem die Vendor-Bibliothek danebenliegt. Kubernetes-Secrets, JWT-Payloads, signierte CloudFormation-YAMLs und proprietäre Konfigurationen verlassen dein Gerät nicht.
Wie geht der Konverter mit Multi-Dokument-YAML um?
YAML unterstützt mehrere Dokumente in einem Stream, getrennt durch Zeilen, die nur --- enthalten. Bei YAML → JSON ruft der Konverter jsyaml.loadAll auf, das jedes Dokument als JavaScript-Wert zurückgibt. Wird genau ein Dokument gefunden, ist die JSON-Ausgabe genau dieses Dokument; werden zwei oder mehr gefunden, ist die JSON-Ausgabe ein Array. Bei JSON → YAML wird, wenn die Eingabe ein JSON-Array ist UND der Multi-Dokument-Schalter aktiv ist, jedes Array-Element als eigenes Dokument mit ----Trennern dazwischen ausgegeben — nützlich, um aus einem JSON-Array von Ressourcen ein kubectl apply-freundliches Bundle zu erzeugen.
Werden YAML-Anker und -Aliase unterstützt?
Ja — &anchor-Definitionen und *alias-Referenzen werden vom Standardschema von js-yaml beim Laden aufgelöst. Eine YAML-Eingabe wie defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d wird zu einem JSON-Objekt geparst, in dem sowohl job_a als auch job_b jeweils retries: 3, timeout: 30 enthalten. Der Merge-Schlüssel << (eine YAML-1.1-Erweiterung, die js-yaml weiterhin respektiert) wird ebenfalls vom Standardschema unterstützt.
Bleiben YAML-Kommentare beim Konvertieren nach JSON und zurück erhalten?
Nein — js-yaml entfernt Kommentare während des Parsens, sodass eine Round-Trip-Konvertierung YAML → JSON → YAML jede mit # beginnende Zeile verliert. Das ist eine bekannte Einschränkung des Load/Dump-Modells; falls die Erhaltung von Kommentaren kritisch ist, verwende eine kommentar-bewusste Bibliothek wie das npm-Paket yaml (das eine CST + AST-API mitliefert, die Trivia bewahrt), statt js-yaml. Für die meisten Konfigurations-Konvertierungs-Workflows ist der Kompromiss akzeptabel: Das durchgereichte YAML behält alle Schlüssel, Werte, Anker und Aliase, nur eben ohne die von Hand verfassten Kommentare.
Was passiert mit benutzerdefinierten YAML-Tags?
Der Konverter verwendet das DEFAULT_SCHEMA von js-yaml, das !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary und !!timestamp kennt — jedes Tag des YAML-1.2-Core und der JSON-Schemata. Benutzerdefinierte oder anwendungsspezifische Tags (z. B. !Ref in CloudFormation, !vault in Ansible) werden nicht erkannt und tauchen als klarer Fehler auf, der das nicht unterstützte Tag nennt. Für CloudFormation speziell nutze den Ablauf aws cloudformation package + --output-template-file, um benutzerdefinierte Tags zu expandieren, bevor du sie in diesen Konverter einfügst.
Dieser JSON ↔ YAML-Konverter liefert js-yaml@4.1.0 aus derselben Origin gebündelt mit, unterstützt Multi-Dokument-Streams und Anker/Aliase ab Werk und meldet YAML-Parse-Fehler mit Zeile und Spalte, damit du die Quelle reparieren kannst. Kein Upload, kein CDN, keine Telemetrie — jedes Byte bleibt in deinem Browser.