Zum Inhalt springen

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.

YAML

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

  1. Füge ein einzelnes YAML-Dokument ein oder lade eine .yaml/.yml-Datei.
  2. Wenn ein Fehler erscheint, prüfe in der gemeldeten Zeile Einrückung, doppelte Schlüssel und ---Trenner.
  3. 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.

Spezifikationen und Referenzen