YAML, TOML und JSON sind die drei wichtigsten textbasierten Datenformate der Softwarewelt. JSON dominiert den Datenaustausch zwischen Diensten, YAML die Konfiguration moderner Tools (Docker, Kubernetes, CI/CD), TOML ist die Wahl für schlanke, gut lesbare Konfigurationsdateien (z.B. Cargo.toml, pyproject.toml).

JSON: Datenaustausch überall

JSON (JavaScript Object Notation) ist ein Untermenge der JavaScript-Syntax: Objekte in geschweiften Klammern, Arrays in eckigen, Strings in doppelten Anführungszeichen.

{
  "name": "Lübeck",
  "plz": 23552,
  "tags": ["hanse", "wissen"],
  "aktiv": true
}

YAML: Lesbar und einrückungsbasiert

YAML (YAML Ain't Markup Language) verzichtet auf Klammern und nutzt Einrückung. Es ist das Standardformat für Docker-Compose, Kubernetes-Manifeste und GitHub-Actions-Workflows.

name: Lübeck
plz: 23552
tags:
  - hanse
  - wissen
aktiv: true
server:
  host: web1
  port: 443

TOML: Schlank und typisiert

TOML (Tom's Obvious Minimal Language) kombiniert Klammern für Tabellen mit einfachen key = value-Zeilen — ideal für Konfigurationen mit vielen Einzelwerten.

name = "Lübeck"
plz = 23552
aktiv = true

[server]
host = "web1"
port = 443

Konvertieren zwischen den Formaten

Mit Python, jq oder yq lassen sich die Formate leicht umwandeln:

# JSON → YAML (yq)
yq -P '.' data.json > data.yaml

# YAML → JSON (yq)
yq -o=json '.' data.yaml > data.json

# JSON hübsch formatieren (jq)
jq '.' data.json

In Python verarbeiten

import json, yaml, tomllib

data = json.load(open("data.json"))        # JSON lesen
cfg  = yaml.safe_load(open("config.yaml")) # YAML lesen
toml = tomllib.load(open("pyproject.toml", "rb"))  # TOML lesen

Wann welches Format?

  • JSON: APIs, Webservices, Datenaustausch zwischen Programmen.
  • YAML: komplexe Konfiguration mit Hierarchie und Kommentaren (Kubernetes, Docker Compose, CI/CD).
  • TOML: einfache, flache Konfiguration mit klarer Typisierung (Rust Cargo, Python pyproject).
  • Kommentare: JSON kann keine, YAML und TOML können #-Kommentare.

Praxis-Tipps

  • YAML ist einbettungsempfindlich: Tabs sind verboten, konsistente Einrückung ist Pflicht.
  • Für maschinellen Austausch JSON verwenden — es ist am striktesten und am schnellsten zu parsen.
  • TOML ist die beste Wahl, wenn die Datei von Menschen gepflegt wird und flach bleibt.

Verwandte Grundlagen: Python-Befehle und Bash-Befehle.