YAML und JSON: zwei Seiten derselben Medaille
YAML und JSON sind beides Datenserialisierungsformate, die in der Softwareentwicklung weit verbreitet sind. Wer mit Docker Compose, Kubernetes, GitHub Actions oder Ansible gearbeitet hat, kennt YAML. Wer Web-APIs entwickelt oder mit JavaScript gearbeitet hat, kennt JSON. Sie uberschneiden sich stark, jede gueltige JSON-Datei ist auch gueltiges YAML.
Dennoch haben sie unterschiedliche Starken, und Projekte mussen Daten regelmasig zwischen beiden Formaten verschieben.
Wesentliche Unterschiede
YAML ist auf Menschen ausgerichtet. Es verwendet Einruckung statt Klammern, unterstutzt Kommentare, erlaubt mehrzeilige Zeichenketten auf naturliche Weise und liest sich eher wie eine Konfigurationsdatei als Code. Das macht es beliebt fur Konfigurationen: Docker-Compose-Dateien, CI-Pipelines, Ansible-Playbooks, Helm-Charts.
JSON ist auf Maschinen ausgerichtet. Es ist streng, eindeutig und jede wichtige Programmiersprache verfugt uber einen eingebauten JSON-Parser. Es ist die gemeinsame Sprache von Web-APIs und Datenaustausch.
| YAML | JSON | |
|---|---|---|
| Kommentare | Ja (`#`) | Nein |
| Zeichenketten in Anfuhrungszeichen | Optional | Erforderlich |
| Mehrzeilige Zeichenketten | Nativ | Erfordert `\n` |
| Abschliessende Kommas | Erlaubt | Nicht erlaubt |
| Syntaxstrenge | Entspannt | Streng |
| Werkzeugunterstuttzung | Gut | Universell |
Haufige Konvertierungsszenarien
YAML nach JSON: Sie haben eine YAML-Konfigurationsdatei und mussen deren Werte an eine JSON-API ubergeben, die Struktur validieren oder sie in ein Werkzeug importieren, das nur JSON akzeptiert.
JSON nach YAML: Sie haben eine JSON-Nutzlast erhalten und mochten sie als lesbarere Konfigurationsdatei speichern, oder Sie migrieren von einem JSON-basierten zu einem YAML-basierten Werkzeug.
Fehlerquellen
Implizite YAML-Typen
YAML hat implizite Typumwandlung. Die Zeichenkette yes in YAML wird in JSON zu true. Die Zeichenkette 1.0 wird zu einem Float. null, ~ und leere Werte werden alle zu JSON null. Stellen Sie sicher, dass Zeichenkettenwerte, die wie Booleans oder Zahlen aussehen, in YAML in Anfuhrungszeichen stehen, wenn sie nach der Konvertierung Zeichenketten bleiben sollen.
Einruckungsfehler
YAML ist einruckungsempfindlich. Ein einzelnes zusatzliches Leerzeichen kann die Struktur Ihres Dokuments verandern. Wenn Ihr Konvertierungswerkzeug einen Fehler meldet, ist die wahrscheinlichste Ursache eine inkonsistente Einruckung (das Mischen von Tabulatoren und Leerzeichen ist nicht erlaubt).
Mehrere Dokumente
YAML unterstutzt mehrere Dokumente in einer Datei, getrennt durch ---. Die meisten JSON-Werkzeuge verarbeiten nur ein Dokument gleichzeitig.
Konvertierung im Browser
Sie mussen kein Befehlszeilenwerkzeug installieren. Der YAML-zu-JSON-Konverter auf dieser Seite fuhrt die Konvertierung vollstandig clientseitig durch, fugen Sie Ihr YAML ein und erhalten Sie sofort JSON (oder umgekehrt). Ihre Daten verlassen den Browser nicht.
Fur Befehlszeilen-Nutzer: yq -o=json ihre-datei.yaml konvertiert YAML in einem Schritt zu JSON.
Kurz zusammengefasst
YAML eignet sich fur von Menschen geschriebene Konfiguration; JSON eignet sich fur den maschinellen Datenaustausch. Die Konvertierung ist unkompliziert, sobald man die strukturelle Aquivalenz und die Stolpersteine (implizite Typen, Einruckung, mehrere Dokumente) kennt.