JSON-zu-YAML-Konvertierung: Ein vollstÀndiger Migrationsleitfaden
JSON und YAML reprÀsentieren dieselben Datenstrukturen mit unterschiedlicher Syntax. Die Konvertierung zwischen ihnen ist in den meisten FÀllen unkompliziert, aber GrenzfÀlle bei Typen, mehrzeiligen Strings und Kommentaren erfordern Aufmerksamkeit. Dieser Leitfaden behandelt die vollstÀndige Zuordnung zwischen den Formaten.
Syntax-Mapping
Objekte / Zuordnungen
JSON:
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
}
}
YAML:
database:
host: localhost
port: 5432
name: myapp
Arrays / Sequenzen
JSON:
{
"servers": ["web1", "web2", "web3"]
}
YAML:
servers:
- web1
- web2
- web3
Verschachtelte Strukturen
JSON:
{
"services": [
{
"name": "api",
"ports": [8080, 8443],
"env": {"NODE_ENV": "production"}
}
]
}
YAML:
services:
- name: api
ports:
- 8080
- 8443
env:
NODE_ENV: production
Konvertieren Sie sofort mit unserem JSON-zu-YAML-Konverter.
GrenzfÀlle beachten
1. Kommentare
YAML unterstĂŒtzt Kommentare; JSON nicht. Bei der Konvertierung von YAML zu JSON gehen alle Kommentare verloren:
# This comment will be lost in JSON
database:
host: localhost # Also lost
2. Mehrzeilige Strings
YAML hat eine leistungsfÀhige Mehrzeilen-Syntax, die JSON fehlt:
description: |
This is a multi-line
string that preserves
line breaks.
In JSON wird daraus:
{
"description": "This is a multi-line\nstring that preserves\nline breaks.\n"
}
3. Typ-Mehrdeutigkeit
YAML erkennt Typen automatisch, was zu Problemen fĂŒhren kann:
version: 1.0 # Float, not string "1.0"
port: 080 # Octal 64, not string "080"
country: NO # Boolean false, not string "NO"
In JSON sind Typen explizit:
{
"version": "1.0",
"port": "080",
"country": "NO"
}
Bei der Konvertierung von JSON zu YAML AnfĂŒhrungszeichen um Werte setzen, die fehlinterpretiert werden könnten.
4. Null-Werte
Beide unterstĂŒtzen null, aber die Syntax unterscheidet sich:
value: null # Explicit
value: ~ # YAML shorthand
value: # Empty value = null
{ "value": null }
5. Sonderzeichen in SchlĂŒsseln
JSON-SchlĂŒssel können jedes Unicode-Zeichen enthalten. YAML-SchlĂŒssel mit Sonderzeichen benötigen AnfĂŒhrungszeichen:
"content-type": "application/json" # Hyphen needs quotes
simple_key: value # Underscore is fine
Kommandozeilen-Konvertierung
Mit yq (YAML-Prozessor)
# JSON to YAML
yq -P input.json > output.yaml
# YAML to JSON
yq -o=json input.yaml > output.json
Mit Python
# JSON to YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml
# YAML to JSON
python3 -c "import json, yaml, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json
Mit jq + yq zusammen
# Process JSON, output as YAML
cat config.json | jq '.database' | yq -P
Wann welches Format verwenden
| Kriterium | JSON | YAML |
|---|---|---|
| Menschliche Bearbeitung | Schwieriger (Klammern, Kommas) | Einfacher (saubere Syntax) |
| Maschinelles Parsen | Schneller | Langsamer |
| Kommentare | Nicht unterstĂŒtzt | UnterstĂŒtzt |
| Datenaustausch | Standard (APIs) | Selten |
| Konfiguration | Akzeptabel | Bevorzugt |
| Striktheit | Strikt (gut) | Flexibel (riskant) |
JSON verwenden fĂŒr: API-Kommunikation, Datenspeicherung, maschinell generierte Konfigurationen, Browser-Umgebungen.
YAML verwenden fĂŒr: Manuell bearbeitete Konfigurationen, Docker Compose, Kubernetes, CI/CD-Pipelines, Ansible.
FĂŒr einen tieferen Vergleich siehe unseren Artikel YAML vs JSON.
FAQ
Ist YAML eine Obermenge von JSON?
Ja, seit YAML 1.2 (2009) ist jedes gĂŒltige JSON-Dokument auch gĂŒltiges YAML. Ein YAML-Parser kann JSON direkt parsen. Umgekehrt gilt dies jedoch nicht â YAML-Funktionen wie Kommentare, Anker und mehrzeilige Strings haben kein JSON-Ăquivalent.
Was ist schneller zu parsen, JSON oder YAML?
JSON ist in praktisch allen Sprachen deutlich schneller zu parsen. JSON-Parser sind einfacher, da das Format weniger Syntax zu verarbeiten hat. FĂŒr Konfigurationsdateien, die einmalig beim Start geladen werden, ist der Unterschied vernachlĂ€ssigbar. FĂŒr Hochdurchsatz-Datenverarbeitung ist JSON die klare Wahl.
Verwandte Ressourcen
- JSON-zu-YAML-Konverter â Sofort zwischen Formaten konvertieren
- YAML vs JSON â Detaillierter Formatvergleich
- YAML-Syntax-Tutorial â YAML von Grund auf lernen