JSON in YAML umwandeln

JSON kannst du hier kostenlos und ohne Konto in YAML umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Verlustfrei Es geht nichts verloren. YAML enthält genau das, was auch JSON enthielt.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Wann ein Manifest als YAML gebraucht wird

Ein Kubernetes-Cluster liefert seine Ressourcen als JSON zurück, wenn man sie über die API abfragt — ein Deployment, eine ConfigMap, eine Pipeline-Definition, die ein Tool exportiert hat. Ins Repository gehört davon aber die YAML-Fassung, weil jede Dokumentation, jedes Beispiel und jede Reviewer:in in diesem Format denkt.

Das betrifft nicht nur Kubernetes. GitHub Actions, GitLab CI und docker-compose erwarten dieselbe Einrückungsschreibweise, und ein Plattform-Team, das eine Pipeline aus einem älteren System herauslöst, bekommt am Ende fast immer erst JSON und muss es danach in das Format bringen, das im eigenen Repo Standard ist.

YAML 1.2 ist eine Obermenge von JSON — hier geht nichts verloren

Seit der Spezifikation von 2009 gilt: Jedes gültige JSON-Dokument ist zugleich gültiges YAML. Die Umwandlung schreibt denselben Baum also nur in einer anderen Schreibweise neu, ohne Typ, Struktur oder einen einzigen Wert zu verändern.

Das macht diese Seite anders als die meisten Nachbarseiten hier. Es gibt keinen Datenverlust zu erklären und keine Rundung zu rechtfertigen. Was bleibt, sind Fragen dazu, wie das Ergebnis gelesen wird — und die sind wichtiger, als jede Datenverlust-Warnung es wäre.

Die eigentliche Falle heißt „yes", nicht „ja"

Der YAML-1.2-Standard behandelt yes, no, on und off als gewöhnliche Zeichenketten, also schreibt der Konverter sie unquotiert. Ein YAML-1.1-Leser — und PyYAML, das hinter Ansible und einem Großteil der Python-Werkzeuge steckt, ist genau das — löst dieselben Wörter zu Wahrheitswerten auf. Aus dem String „no" wird beim Einlesen false.

Für ein deutschsprachiges Manifest ist das seltener ein Problem, als man annehmen könnte: „ja" und „nein" sind für keinen YAML-Parser reservierte Wörter, weder in Version 1.1 noch in 1.2. Die Falle klappt trotzdem regelmäßig zu, weil deutsche Teams ihre Feldnamen und Werte aus englischsprachigen Tutorials kopieren — enabled: yes, retry: no —, und genau diese kopierten Werte sind es, die beim nächsten Ansible-Lauf zu false statt zur erwarteten Zeichenkette werden.

Welche Werte in Anführungszeichen stehen und warum

Der Schreiber quotiert gezielt dort, wo die unquotierte Form etwas anderes bedeuten würde. Die Zeichenkette „1.0" bekommt Anführungszeichen, weil sie sonst als Zahl gelesen würde; „null" ebenso, weil das unquotierte Wort den Nullwert bezeichnet. Ein Wert, der mit einer Raute beginnt, wird quotiert, weil eine Raute sonst einen Kommentar einleitet.

Die Regel folgt konsequent YAML 1.2: Genau die Werte, die unter 1.2 ihre Bedeutung ändern würden, werden geschützt; die Werte, die nur unter 1.1 kippen — yes, no, on, off, und ein datumsförmiger String wie 2024-01-01 — bleiben bewusst unquotiert, weil sie nach dem aktuellen Standard einfache Zeichenketten sind.

Mehrzeilige Werte werden endlich lesbar

Ein JSON-String kann keinen echten Zeilenumbruch enthalten, also steht ein eingebettetes Shell-Skript oder ein SQL-Statement als eine einzige, sehr lange Zeile mit \n an jeder Stelle, an der eigentlich eine neue Zeile beginnen sollte. Eine Änderung daran im Review zu erkennen, ist kaum möglich.

Der YAML-Schreiber setzt solche Werte als Block-Scalar: ein Pipe-Zeichen, danach der Text auf eigenen, eingerückten Zeilen mit den Umbrüchen an ihrem Platz. Ein zwölfzeiliges Entrypoint-Skript wird wieder zu zwölf Zeilen — für ein Manifest, das jemand im Team lesen und freigeben soll, ist das oft der größte einzelne Gewinn dieser Umwandlung.

Listen aus Objekten bekommen die vertraute Bindestrich-Form

Ein JSON-Array aus Objekten wird zur Liste mit Bindestrich, wie sie in jedem Kubernetes- und Actions-Beispiel steht: ein Strich, dahinter der erste Schlüssel, darunter eingerückt der Rest. Container, Steps, Volumes und Jobs kommen genau in der Form an, die auch die Dokumentation zeigt.

Für die Korrektheit ändert das nichts, wohl aber für das Review. Wer sechs Deployment-Schritte in YAML durchsieht, erkennt die Grenzen zwischen ihnen ohne geschweifte Klammern zu zählen — genau der Grund, warum sich das Ökosystem trotz der Einrückungsfallen für dieses Format entschieden hat.

Der Kommentar ist der eigentliche Grund für die Umwandlung

JSON kennt keine Kommentare — die Grammatik in RFC 8259 sieht dafür schlicht keine Produktion vor, ein korrekter Parser hat also nichts zu akzeptieren. YAML erlaubt sie überall dort, wo eine Zeile mit einer Raute beginnen kann. Ein exportiertes Manifest nach YAML zu bringen, geht meistens gar nicht in erster Linie um die Syntax — es geht darum, endlich einen Ort zu haben, an dem steht, warum ein Wert so gesetzt ist.

Im frisch erzeugten Ergebnis steht noch nichts davon, weil auch die Quelle nichts hatte. Das Nachtragen ist die erste sinnvolle Bearbeitung, und die nützlichsten Kommentare beschreiben nie, was ein Feld ist, sondern warum die Replikenzahl drei beträgt, an welches andere Repository das Image-Tag gekoppelt ist, und was bricht, wenn das Timeout gesenkt wird.

Was YAML kann, das aus JSON nie entstehen wird

YAML kennt Anker und Aliase, mit denen ein Block einmal definiert und an drei Stellen referenziert wird, und es kennt mehrere Dokumente in einer Datei, getrennt durch drei Bindestriche. Beides ist verbreitet — Compose-Dateien und Kubernetes-Bündel nutzen es regelmäßig —, und keines von beidem kann aus einer JSON-Quelle entstehen, weil JSON keine Möglichkeit hat, es auszudrücken.

Das erzeugte Manifest ist also korrekt und flach: Was im JSON wiederholt stand, steht auch im YAML wiederholt. Die Wiederholung nachträglich in einen Anker zu ziehen, ist eine manuelle Änderung, die sich nur lohnt, wenn sie wirklich echte Duplizierung beseitigt.

Die Reihenfolge der Schlüssel bleibt, wie sie war

Der Schreiber übernimmt die Reihenfolge, in der die Schlüssel ankamen — apiVersion, kind und metadata stehen also weiter oben, statt alphabetisch sortiert zu werden. Weder JSON noch YAML definiert eine Bedeutung für die Reihenfolge von Schlüsseln, und viele Werkzeuge sortieren trotzdem frei, aber ein alphabetisiertes Manifest ist schwerer zu lesen und erzeugt bei jedem Diff unnötig viel Rauschen.

Das lohnt sich zu wissen, wenn das Ergebnis gegen eine bereits im Repository liegende Datei verglichen wird. Unterscheiden sich beide nur in der Reihenfolge, kam der Unterschied von dem, was das JSON erzeugt hat — eine aus dem Cluster gelesene Ressource liefert Felder in der Reihenfolge des API-Servers, nicht in der, in der sie einmal geschrieben wurden.

Die YAML prüfen, bevor jemand ihr vertraut

Die günstigste Prüfung ist die des Werkzeugs selbst: kubectl apply mit --dry-run=client, docker compose config oder der Linter der Actions-Datei. Jedes davon liest das Dokument und meldet die gefundene Struktur — das findet einen falsch platzierten Schlüssel schneller, als ihn im Editor zu suchen.

Die Prüfung, die das Quotierungsproblem findet, ist eine andere und muss bewusst gemacht werden: im umgewandelten Text nach unquotiertem yes, no, on, off und jedem unquotierten Datum suchen und für jeden Fall entscheiden, ob ein YAML-1.1-Leser ihn je zu Gesicht bekommt. Das dauert eine Minute und ist der einzige Teil dieser Umwandlung, vor dem kein Parser warnt.

Ein docker-compose-Setup, das aus einer laufenden Umgebung exportiert wurde

Manche Werkzeuge, die eine bestehende Container-Landschaft inspizieren, geben ihre Erkenntnisse als JSON zurück, obwohl das Zielformat für eine lokale Entwicklungsumgebung eindeutig eine compose-Datei ist. Wer einen laufenden Stand auf diese Weise sichern oder an ein neues Teammitglied weitergeben will, steht damit vor derselben Umwandlung wie bei Kubernetes, nur mit Diensten, Volumes und Netzwerken statt mit Deployments und Services.

Die Struktur unterscheidet sich kaum: Auch hier werden Objektlisten zu Bindestrich-Listen, auch hier lohnt sich der Blick auf yes, no, on und off in den Umgebungsvariablen, weil gerade dort häufig Werte wie DEBUG=yes oder RESTART=no aus einer Kopiervorlage landen, ohne dass beim ersten Schreiben jemand an eine YAML-1.1-Umgebung gedacht hat.

Das Manifest verlässt den eigenen Rechner nicht

Die Umwandlung läuft in diesem Tab. Der JSON-Parser stammt aus dem Browser selbst, und der YAML-Schreiber ist eine Bibliothek, die diese Seite nachlädt — es gibt also keine Anfrage, die das Dokument irgendwohin trägt, kein Konto und kein Tageslimit, und die freie Version nimmt bis zu 100 MB entgegen, weit mehr als jedes Manifest braucht.

Für dieses Publikum ist das keine abstrakte Zusicherung. Ein aus einem laufenden Cluster gelesenes Manifest trägt interne Hostnamen, Registry-Pfade, Service-Account-Namen und die Form der eigenen Infrastruktur, und in nicht wenigen deutschen IT-Abteilungen gilt das Einfügen solcher Inhalte in einen öffentlichen Web-Konverter als meldepflichtiger Vorfall. Hier gibt es nichts zu senden.

JSON in YAML umwandeln — so geht es

  1. Leg deine JSON-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl YAML als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige YAML-Datei herunter.

JSON und YAML im Vergleich: was sich ändert

JSON im Vergleich zu YAML
JSONYAML
Vollständiger NameJavaScript Object NotationYAML Ain't Markup Language
Dateiendung.json.yaml, .yml
Medientypapplication/jsonapplication/yaml
Erstmals veröffentlicht20012001
SpezifikationRFC 8259YAML 1.2
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserJeder BrowserKein Browser
Stattdessen erwogenXML, NDJSONTOML

Was erhalten bleibt

Es geht nichts verloren. JSON und YAML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Das Ergebnis öffnen

Kein Browser liest YAML. Damit ist es das unhandlichere der beiden. Prüfe lieber vorher, ob die Gegenstelle es annimmt.

Visual Studio Code liest sowohl JSON als auch YAML — du kannst das Ergebnis also gegen das Original prüfen, ohne ein zweites Programm zu brauchen.

Wofür die beiden Formate gedacht sind

JSON wurde 2001 veröffentlicht. Festgehalten ist das in RFC 8259 — lohnt sich zu kennen, wenn die Datei das Programm überleben soll, das sie geschrieben hat.

YAML stammt aus 2001, festgehalten in YAML 1.2. Visual Studio Code und yq lesen das Format.

JSON zu YAML: häufige Fragen

Werden meine JSON-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von JSON in YAML kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von JSON in YAML Qualität verloren?

Nein. YAML speichert denselben Inhalt, ohne etwas wegzuwerfen — das Ergebnis ist qualitativ mit dem Original identisch.

Öffnet sich eine YAML-Datei im Browser?

Kein Browser liest YAML. Damit ist es das unhandlichere der beiden. Prüfe lieber vorher, ob die Gegenstelle es annimmt.

Ist JSON zu YAML verlustfrei?

Es geht nichts verloren. JSON und YAML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Mehr über diese Formate