YAML in JSON umwandeln
Parst ein YAML-Dokument mit der yaml-Bibliothek (YAML 1.2 Core Schema) und gibt es als eingerücktes JSON aus. Kommentare werden entfernt, Anker und Aliase aufgelöst, und Werte wie yes oder 2024-01-01 bleiben Strings.
In YAML geschriebene Einstellungen an eine API oder einen JSON-Schema-Validator senden, die nur JSON akzeptieren.
Wann sie hilft
- In YAML geschriebene Einstellungen an eine API oder einen JSON-Schema-Validator senden, die nur JSON akzeptieren.
- Prüfen, wie eine CI- oder Kubernetes-Datei tatsächlich typisiert ist, z. B. ob eine Version ein String oder eine Zahl ist.
Anwendung
- Füge ein einzelnes YAML-Dokument ein oder lade eine .yaml/.yml-Datei.
- Wenn ein Fehler erscheint, prüfe in der gemeldeten Zeile Einrückung, doppelte Schlüssel und ---Trenner.
- Prüfe in der JSON-Ausgabe, was String und was Zahl ist, und kopiere sie dann.
YAML-Eingabe
# deployment settings service: billing-api replicas: 2 version: "1.10" enabled: yes ports: - 80 - 443 env: LOG_LEVEL: info
JSON
{
"service": "billing-api",
"replicas": 2,
"version": "1.10",
"enabled": "yes",
"ports": [
80,
443
],
"env": {
"LOG_LEVEL": "info"
}
}Details und Einschränkungen
Das Parsen läuft im Browser. Die Ausgabe ist immer JSON mit 2 Leerzeichen Einrückung; eine Minify-Option gibt es nicht.
Es gelten die Regeln von YAML 1.2: yes/no/on/off sind Strings, keine Booleans, und Datumsangaben ohne Anführungszeichen bleiben Strings. 0o17 ist oktal (15).
Merge-Keys (<<: *anchor) werden nicht zusammengeführt; sie erscheinen als wörtlicher "<<"-Schlüssel. Doppelte Schlüssel in einem Mapping sind ein Fehler.
Ganzzahlen über 2^53 verlieren in JSON an Genauigkeit. Setze lange IDs im YAML in Anführungszeichen.
FAQ
Kann es eine Datei mit mehreren durch --- getrennten Dokumenten umwandeln?
Nein. Mehrere Dokumente führen zum Fehler "Source contains multiple documents". Füge jeweils ein Dokument ein. Ein einzelnes führendes --- ist in Ordnung.
Warum ist enabled: yes im JSON ein String?
Der Parser folgt YAML 1.2, wo nur true und false Booleans sind. Schreibe true/false, wenn du einen JSON-Boolean brauchst.
Werden Anker und Aliase unterstützt?
Ja. Ein Alias wie *base wird durch eine Kopie des verankerten Werts ersetzt. Der Merge-Key << aus YAML 1.1 wird allerdings nicht angewendet.