Zum Inhalt springen
Case Converter Online
de

JSON in YAML umwandeln

Füge JSON ein und bekomm sauberes YAML, oder wechsle die Richtung und mach aus YAML JSON. Die Umwandlung läuft beim Tippen in deinem Browser.

Füge JSON ein oder klicke auf Beispiel. Die Umwandlung läuft in deinem Browser.

JSON und YAML: dieselben Daten, zwei Stile

JSON und YAML können dieselben Dinge beschreiben: Objekte (in YAML Mappings genannt), Listen, Strings, Zahlen, Booleans und null. JSON nutzt geschweifte und eckige Klammern, Anführungszeichen und Kommas. YAML nutzt Einrückung und Bindestriche, was es kürzer und von Hand leichter lesbar und bearbeitbar macht. Deshalb nutzen Tools wie Kubernetes, Docker Compose, GitHub Actions und Ansible YAML für die Konfiguration, während APIs meist JSON sprechen.

Oft musst du zwischen beiden wechseln. Eine API liefert JSON, und du willst es in einer Konfigurationsdatei haben. Oder eine YAML-Konfiguration muss an ein Programm, das nur JSON liest. Dieser Konverter kann beides.

So nutzt du ihn

  1. Wähl die Richtung mit der Schaltfläche JSON in YAML oder YAML in JSON.
  2. Füge deine Daten in das linke Feld ein, klicke auf Datei öffnen oder auf Beispiel. Das Ergebnis erscheint beim Tippen rechts.
  3. Wähl eine Einrückung von 2 oder 4 Leerzeichen. In der Richtung YAML in JSON gibt es auch die Option Minifiziert.
  4. Für JSON in YAML schaltest du Schlüssel von A bis Z sortieren ein, um die Schlüssel alphabetisch zu ordnen.
  5. Klicke auf Kopieren oder auf Herunterladen, um eine .yaml- oder .json-Datei zu speichern.

Wenn du die Richtung wechselst, wandert das aktuelle Ergebnis in die Eingabe. So kannst du hin und zurück umwandeln, um eine Rundreise zu prüfen.

Beispiel: JSON in YAML

{"name":"web-app","version":3,"private":true,"ports":[80,443],"database":{"host":"localhost","password":null},"tags":["api","v2"]}

wird zu:

name: web-app
version: 3
private: true
ports:
  - 80
  - 443
database:
  host: localhost
  password: null
tags:
  - api
  - v2

Sichere Anführungszeichen

Manche Strings sehen für einen YAML-Parser wie andere Typen aus. Der Konverter setzt sie in Anführungszeichen, damit sie Strings bleiben. Dieses JSON:

{"zip":"02134","enabled":"yes","version":"1.10","note":"a: b","empty":""}

wird zu:

zip: "02134"
enabled: "yes"
version: "1.10"
note: "a: b"
empty: ""

Ohne die Anführungszeichen würde 02134 seine führende Null verlieren, 1.10 würde zur Zahl 1.1, und ein älterer Parser nach YAML 1.1 (PyYAML und viele CI-Tools folgen diesen Regeln) würde yes als true lesen. Berühmt ist das als „Norwegen-Problem“: Der Ländercode NO wird dort zu false. Der Konverter folgt den strengeren Regeln für Anführungszeichen, damit das Ergebnis in alten und neuen Parsern gleich gelesen wird. Datumsangaben wie "2024-01-15" bekommen aus demselben Grund Anführungszeichen. Deutsche Wörter wie „ja“ und „nein“ sind dagegen in keiner YAML-Version ein Boolean und brauchen keinen Schutz.

Beispiel: YAML in JSON

# App settings
name: web-app
ports:
  - 80
  - 443
debug: false
retries: 3
owner: ~

wird zu:

{
  "name": "web-app",
  "ports": [
    80,
    443
  ],
  "debug": false,
  "retries": 3,
  "owner": null
}

Der Kommentar ist weg, weil JSON keine Kommentare kennt, und ~ ist die YAML-Kurzform für null.

Merge Keys werden aufgelöst. Diese Datei im Rails-Stil:

defaults: &defaults
  adapter: postgres
  host: localhost
development:
  <<: *defaults
  database: dev_db

ergibt:

{
  "defaults": {
    "adapter": "postgres",
    "host": "localhost"
  },
  "development": {
    "adapter": "postgres",
    "host": "localhost",
    "database": "dev_db"
  }
}

Zwei Dokumente, die durch --- getrennt sind (etwa kind: Service und kind: Deployment), werden zu einem Array. Mit der Option Minifiziert lautet es [{"kind":"Service"},{"kind":"Deployment"}].

Wie Werte gelesen werden

YAML in JSON nutzt die Regeln von YAML 1.2. Danach sind yes, no und on normale Strings, nur true und false sind Booleans, und Datumsangaben bleiben Strings. Diese Eingabe:

a: yes
b: no
c: on
d: true
e: 010
f: 0o10
g: 1e3
h: 2024-01-15

wird (minifiziert) zu:

{"a":"yes","b":"no","c":"on","d":true,"e":10,"f":8,"g":1000,"h":"2024-01-15"}

Beachte, dass 010 als zehn gelesen wird und 0o10 die Oktalschreibweise für acht ist.

Wenn ein Wert Text bleiben muss, setz ihn im YAML in Anführungszeichen. Das gilt auch für deutsche Dezimalzahlen: preis: 2,50 ist in YAML einfach der String „2,50“, preis: 2.50 dagegen die Zahl 2.5.

Tipps für eine saubere Rundreise

  • JSON in YAML und zurück ergibt dieselben Daten, aber nicht immer denselben Text. Die Reihenfolge der Schlüssel bleibt erhalten, außer du schaltest Schlüssel von A bis Z sortieren ein.
  • YAML-Kommentare, Anker und eigene Tags haben kein Gegenstück in JSON. Anker werden zu vollständigen Kopien der Daten erweitert.
  • Sehr große ganze Zahlen, etwa 20-stellige IDs, bleiben bei JSON in YAML exakt, sofern der Browser das unterstützt. Bei YAML in JSON laufen sie durch JavaScript-Zahlen, speichere lange IDs also als Strings in Anführungszeichen.
  • Deine Dateien bleiben auf deinem Gerät. Nichts wird hochgeladen.

Fehler

Fehler werden mit Zeile und Spalte gemeldet, und In der Eingabe zeigen springt dorthin. Ein Trailing Comma in JSON ergibt Zeile 3, Spalte 1: Ein Komma direkt vor "}" ist nicht erlaubt. Die Meldungen des YAML-Parsers bleiben Englisch, nur Zeile und Spalte davor sind deutsch: Ein doppelter Schlüssel ergibt Map keys must be unique, und Tabs zur Einrückung werden abgelehnt, weil YAML nur Leerzeichen erlaubt.

Andere Wege zur Umwandlung

yq. Die Go-Version von yq wandelt auf der Kommandozeile um: Sie liest JSON als Eingabe, weil JSON gültiges YAML ist, und kann beide Formate ausgeben.

Python. Mit dem Paket PyYAML schreibt yaml.safe_dump(json.load(f)) YAML aus einer JSON-Datei. PyYAML folgt YAML 1.1, prüf also Strings wie yes und no.

VS Code. Mehrere Erweiterungen ergänzen Befehle, um eine Auswahl zwischen JSON und YAML umzuwandeln.

Ähnliche Tools

Um eine YAML-Datei aufzuräumen, ohne sie umzuwandeln, nimm den YAML Formatter. Um JSON vorher zu prüfen oder schön auszugeben, nimm den JSON Formatter. Für Tabellendaten beginnst du mit CSV in JSON umwandeln.

JSON in YAML: Fragen und Antworten

Warum stehen manche Werte im YAML in Anführungszeichen?

Strings, die ein YAML-Parser als etwas anderes lesen könnte, bekommen Anführungszeichen. „02134“ würde zur Zahl 2134, und „yes“ würde in älteren Parsern zu true. Die Anführungszeichen halten sie als Text, das YAML bedeutet also genau dasselbe wie das JSON.

Was passiert mit Kommentaren, wenn ich YAML in JSON umwandle?

Sie fallen weg, weil JSON keine Kommentare kennt. Wandelst du zurück, kommen die Kommentare nicht wieder. Behalte deine ursprüngliche YAML-Datei, wenn die Kommentare wichtig sind.

Kann ich eine Datei mit mehreren YAML-Dokumenten umwandeln?

Ja. Dokumente, die durch --- getrennt sind, werden zu einem JSON-Array mit einem Eintrag pro Dokument, in derselben Reihenfolge.

Werden Anker und Merge Keys unterstützt?

Ja. Aliase wie *defaults werden durch die Daten ersetzt, auf die sie zeigen, und Merge Keys in der Form <<: *defaults werden in das Mapping eingefügt, so wie Docker Compose und Rails es erwarten.

Werden meine Daten hochgeladen?

Nein. Beide Richtungen laufen in deinem Browser. Nichts, was du einfügst oder öffnest, wird irgendwohin gesendet.

Mehr Tools für Code und Daten

Alle Tools ansehen