Ratgeber · JSON 2026
JSON, YAML, TOML im Vergleich
JSON gewinnt bei API-Payloads, YAML bei lesbarer Config, TOML bei einfachen flachen Settings. Aber YAML hat das Norway-Problem, TOML kein Schema.
Was die drei Formate gemeinsam haben
JSON, YAML und TOML sind alle drei Konfigurations- bzw. Datenaustausch-Formate mit hierarchischer Struktur. Sie haben dieselben grundlegenden Datentypen (Object/Map, Array/List, String, Number, Boolean, Null), unterscheiden sich aber stark in Syntax, Lesbarkeit und Anwendungsfeldern.
Direkter Vergleich
| Aspekt | JSON | YAML | TOML |
|---|---|---|---|
| Standard | RFC 8259 (2017) | YAML 1.2 (2009) | TOML 1.0 (2021) |
| Kommentare | nein | ja (#) | ja (#) |
| Trailing-Commas | nein | n/a | nein in inline-Arrays |
| String-Quotes | Double pflicht | optional | Single oder Double |
| Datetime-Typ | als String | nativ | nativ (RFC 3339) |
| Verschachtelung | JSON kann beliebig | YAML kann beliebig | TOML flach, sektionen-basiert |
| Parsing-Speed | sehr schnell | langsam | schnell |
| Hauptanwendung | APIs, Data-Exchange | Configs, K8s, CI | Configs (Rust, Python) |
Wann JSON
JSON ist die richtige Wahl wenn:
- Daten zwischen Maschinen ausgetauscht werden (REST-APIs, GraphQL-Responses)
- Hoher Datendurchsatz erforderlich ist (Streaming, Logs als JSON-Lines)
- Plattform-Interoperabilität zählt (JS, Python, Java, Rust, Go - alle haben performante Parser im Standard)
- Sicherheit/Strenge wichtig ist (kein "yes wird zu true"-Drama wie in YAML)
Wann YAML
YAML lohnt sich wenn:
- Menschen die Datei häufig manuell bearbeiten (Kubernetes-Manifeste, Docker-Compose, GitHub Actions, GitLab CI)
- Mehrzeilige Strings und Anchors/Aliase die Lesbarkeit verbessern
- Verschachtelung tief wird und JSON unleserlich
Achtung Norway-Problem: YAML 1.1 interpretiert no und yes als Boolean - was den ISO-Country-Code für Norwegen ("NO") zerstört, wenn er nicht in Quotes steht. YAML 1.2 (2009) hat das gefixt, aber viele Parser nutzen weiterhin 1.1-Default. Lösung: immer Quotes setzen.
Wann TOML
TOML eignet sich für:
- Flache Konfigurations-Dateien (Cargo.toml in Rust, pyproject.toml in Python)
- Wenn man YAML-Indentation-Albträume vermeiden will
- Nativen Datetime-Support
Limitierung: TOML ist schwächer bei tief verschachtelten Strukturen - wer Trees abbilden will, sollte JSON oder YAML wählen.
Größen-Vergleich (gleiche Daten)
| Format | Bytes | Lesbarkeit |
|---|---|---|
| JSON (minified) | 132 | niedrig |
| JSON (pretty) | 198 | mittel |
| YAML | 156 | hoch |
| TOML | 148 | hoch |
Bei wachsender Komplexität schwillt YAML schneller als JSON (Indentation-Overhead). Nach gzip sind die Unterschiede marginal.
Mein Default
APIs: JSON. CI/CD und Kubernetes: YAML. Tool-Configs in Sprachen mit TOML-Ecosystem (Rust, Python): TOML. Beim Mischen aufpassen - keine zwei Formate für dieselbe Verantwortlichkeit.