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.