§

Füge das JSON oder YAML ein, das du konvertieren möchtest.

Modus
Einrückung
Optionen
§

Ausgabe

yaml

Das Hin- und Herwechseln zwischen JSON und YAML gehört für deutschsprachige Plattform-Teams zum Alltag. SAP betreibt mit der Business Technology Platform (BTP) eine Kubernetes-basierte Cloud, die Deutsche Telekom bietet die Open Telekom Cloud mit gemanagtem K8s, die Bundesdruckerei härtet Container nach BSI-IT-Grundschutz und Automobilkonzerne wie BMW und Mercedes-Benz orchestrieren ihre Mobility-Backends auf Kubernetes. Helm-Charts, ArgoCD-Manifeste, GitHub-Actions-Workflows und OpenAPI-Spezifikationen werden im YAML verfasst, aber von kubectl und Validatoren intern als JSON konsumiert. Die deutsche GitLab- und CNCF-Community pendelt täglich zwischen beiden Formaten. Dieser Konverter erledigt die Hin- und Rückrunde lokal und bleibt damit DSGVO-konform.

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:

  1. 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.
  2. JSON → YAML: JSON.parse validiert 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.
  3. YAML → JSON: jsyaml.loadAll parst 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.
  4. 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.
  5. 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.mark von js-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.loadAll erkennt ----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 / *alias von YAML wird vom Standardschema von js-yaml verarbeitet. 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.js wird 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, ConfigMap oder HelmRelease in 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.yml fü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.json aus der auto-generierten Backend-Dokumentation einfügen und in openapi.yaml fü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.