Die YAML-Ausgabe
Die Konvertierung des Beispiel-JSON ergibt:
server:
host: 0.0.0.0
port: 8080
ssl: true
database:
url: postgresql://localhost:5432/myapp
pool_size: 10
timeout: 30
logging:
level: info
format: json
outputs:
- stdout
- file
Wie JSON auf YAML abgebildet wird
| JSON | YAML |
|---|---|
{ key: value } | key: value |
{ key: 42 } | key: 42 |
{ key: true } | key: true |
{ key: null } | key: null |
[a, b] | - a\n- b |
| Verschachteltes Objekt | Eingerückter Block |
Wann YAML verwenden
Kubernetes und Helm
Jede Kubernetes-Ressource wird in YAML definiert.
Docker Compose
docker-compose.yml verwendet YAML für Dienstdefinitionen, Volume-Mounts und Portzuordnungen.
GitHub Actions
Workflow-Dateien in .github/workflows/ sind YAML.
Ansible
Ansible-Playbooks und Inventardateien sind YAML.
Wann JSON verwenden
package.jsonundpackage-lock.json: Tools generieren und lesen sietsconfig.json: der TypeScript-Compiler liest und validiert sie- API-Antworten: Jeder HTTP-Client und jede Sprache hat einen JSON-Parser
- Datenaustausch zwischen Diensten: Strenge Syntax bedeutet weniger Parsing-Überraschungen
YAML-Fallstricke
Das Norwegen-Problem
YAML 1.1 behandelt diese nicht in Anführungszeichen gesetzten Werte als Boolean:
# Alle werden in YAML 1.1 zu Boolean
enabled: yes
disabled: no
flag: on
toggled: off
Verwende immer Anführungszeichen bei Zeichenfolgen, die falsch interpretiert werden könnten:
country: NO
status: off
Einrückung mit Tabs
Ein einzelnes Tabulatorzeichen irgendwo in einer YAML-Datei verursacht einen Parsing-Fehler.
Mehrzeilige Strings
YAML hat zwei Block-Skalar-Stile. Der Literal-Stil (|) bewahrt Zeilenumbrüche. Der Gefaltete-Stil (>) ersetzt Zeilenumbrüche durch Leerzeichen.