JSON vs YAML: Unterschiede und wann konvertieren

Beide Konfigurationsformate vergleichen und wann YAML oder JSON für K8s, Docker Compose und mehr sinnvoll ist.

Dieselbe Konfiguration: API in JSON, K8s in YAML, in CI wieder hin und her — das falsche Format führt zu Parse-Fehlern, verlorenen Kommentaren oder Deployments in der falschen Umgebung.

Dieser Artikel richtet sich an Full-Stack- und DevOps-Ingenieure, vergleicht Syntax und Auswahlkriterien von JSON und YAML, beschreibt einen sicheren 5-Schritte-Konvertierungsworkflow sowie Fallstricke wie Anker, Aliase und implizite Booleans. Danach können Sie mit der JSON ↔ YAML-Konvertierung der JSON-Toolbox lokal im Browser konvertieren und validieren.

Warum JSON und YAML verstehen wichtig ist

JSON ist der De-facto-Standard für APIs; YAML die De-facto-Sprache für Ops-Konfiguration. Wer zwischen beiden wechselt, ohne die Unterschiede zu kennen, riskiert: „Lokal läuft das YAML, nach JSON-Konvertierung haben sich Schlüsseltypen geändert“.

Beispiel Docker Compose: ports: "8080:8080" vs. numerische Ports in JSON, oder yes/no in K8s-Manifesten als Boolean in YAML — nach Konvertierung zu JSON inkonsistentes Client-Verhalten.

Was sind JSON und YAML

JSON (JavaScript Object Notation) ist ein striktes, textbasiertes Austauschformat: Schlüssel in doppelten Anführungszeichen, keine Kommentare, parserfreundlich. YAML (YAML Ain't Markup Language) nutzt Einrückung für Hierarchie, erlaubt Kommentare und verschiedene Skalar-Schreibweisen — besser für große, manuell gepflegte Configs.

Zusammenhang

In YAML 1.2 ist JSON eine Teilmenge — die meisten gültigen JSON-Dokumente lassen sich direkt als YAML parsen. YAML-spezifische Features (Anker &, Alias *, Mehrzeilen |) gehen bei der Konvertierung zu JSON verloren oder müssen aufgelöst werden.

Kernunterschiede im Vergleich

VergleichsdimensionJSONYAML
Kommentare❌ Nicht unterstützt✅ # Zeilenkommentar
Anführungszeichen bei Schlüsseln✅ Pflicht (doppelt)⚠️ Meist optional
HierarchieGeschweifte / eckige KlammernEinrückung (Leerzeichen)
API-Transport✅ Empfohlen⚠️ Selten
Große Configs von Hand⚠️ Viele Klammern✅ Empfohlen
StriktheitHoch — Parse-Fehler sofortRelativ locker — implizite Typen

Welches Format für wen

Rolle / SzenarioEmpfohlenes FormatGrund
REST / GraphQL APIJSONEinheitliches Ökosystem, eindeutig
Kubernetes / HelmYAMLCommunity-Konvention, kommentierbar
Docker ComposeYAMLOffizielle Beispiele und Doku
package.json / tsconfigJSONNative Toolchain-Unterstützung
Message-Queue PayloadJSONKompakt, schnelles Parsing

Typische Szenarien — Auswahlhilfe

  • Frontend/Backend-API-Vertrag: JSON
  • GitHub Actions / GitLab CI (Teilschritte): YAML
  • Statische Config vor Umgebungsvariablen: je nach Team — YAML mit Kommentaren
  • Maschinell strikt zu validierende Struktur: JSON + JSON Schema

Praxis: 5 Schritte für sichere Konvertierung

  1. Richtung festlegen: JSON → YAML (lesbar/editierbar) oder YAML → JSON (API/Programme)
  2. Original sichern: Kopie vor der Konvertierung aufbewahren
  3. Quellinhalt auf der Konvertierungsseite einfügen, Richtung wählen
  4. Ergebnis prüfen: JSON mit Validator; YAML auf Einrückung und Typen achten
  5. Smoke-Test in Zielumgebung: Einmal deployen oder aufrufen — Verhalten wie vorher

Beispiel: dieselbe Config in zwei Schreibweisen

JSON:

{
  "service": "api-gateway",
  "replicas": 3,
  "debug": false,
  "ports": [8080, 8443]
}

YAML:

service: api-gateway
replicas: 3
debug: false
ports:
  - 8080
  - 8443

Typische Fallstricke bei der Konvertierung

Implizite YAML-Typen

  • yes / no / on / off können als Boolean geparst werden
  • Reine Zahl-Strings in Anführungszeichen, z. B. version: "01"
  • null und ~ in YAML bedeuten leer — in JSON wird daraus null

Größe nach JSON → YAML

YAML ist oft lesbarer, aber nicht immer kürzer. Nur für Transport empfiehlt sich in Produktion weiterhin JSON + Kompression.

Anker und Alias

YAML &anchor und *alias werden bei JSON-Konvertierung zu duplizierten Objekten aufgelöst — prüfen, ob das gewollt ist.

Toolchains: JSON vs. YAML

BedarfJSON-ToolchainYAML-Toolchain
Konvertierung im BrowserJSON-ToolboxJSON-Toolbox
CLI-Validierungjqyamllint / yq
K8s anwendenZuerst YAML oder CRD JSONkubectl apply -f
Schema-ConstraintsJSON Schema etabliertWeniger einheitliche Standards

Häufige Fragen (FAQ)

Kann jedes JSON nach YAML konvertiert werden?

Standard-JSON ja, semantisch äquivalent. Schlüsselreihenfolge und Einrückungsstil können von handgeschriebenem YAML abweichen — die Semantik bleibt gleich.

Bleiben YAML-Kommentare in JSON erhalten?

Nein. JSON hat keine Kommentare — sie gehen bei der Konvertierung verloren. Wichtige Hinweise in Doku oder README festhalten.

Gehen K8s-Ressourcen auch als JSON?

Ja. kubectl unterstützt JSON-Manifeste; Community und Helm nutzen meist YAML — fürs Team ein Format vereinbaren.

Häufigste Gründe für Konvertierungsfehler?

JSON: trailing comma, einfache Anführungszeichen. YAML: Tab und Leerzeichen gemischt, fehlendes Leerzeichen nach dem Doppelpunkt.

Werden Daten auf einen Server hochgeladen?

Nein. Die JSON-Toolbox konvertiert lokal im Browser — auch für interne Configs (dennoch sensible Werte entfernen).

Nach der Konvertierung nochmal validieren?

Ja, empfohlen. Mindestens JSON-Syntax prüfen und in staging testen, ob die Config wirkt.

Fazit und nächste Schritte

JSON setzt auf Striktheit und Interoperabilität, YAML auf Lesbarkeit und Ops-Freundlichkeit. Faustregel: APIs und Programm-zu-Programm → JSON; große statische Configs von Hand → YAML; bei Konvertierung immer validieren und smoke-testen.

Im Repository festlegen, welche Dateitypen welches Format brauchen, und in CI Format-Checks einbauen — so vermeiden Sie Produktionsvorfälle durch implizite YAML-Typen.