So konvertierst du JSON und YAML
Wähle die Richtung und füge ein vollständiges Dokument ein. YAML wird mit JSON_SCHEMA geparst, damit nur JSON-kompatible skalare Typen automatisch entstehen. Prüfe die Ausgabe, weil Kommentare und Präsentationsstil nicht Teil des JSON-Datenmodells sind.
- Wähle JSON nach YAML oder YAML nach JSON.
- Füge genau ein Dokument mit Objekten, Arrays, Zeichenfolgen, Zahlen, booleschen Werten und null ein.
- Konvertiere und prüfe Typen, Anführungszeichen sowie verschachtelte Strukturen.
- Validiere die Ausgabe zusätzlich mit dem Schema und Parser der Zielanwendung.
Beispiele und erwartetes Verhalten
| Eingabe | Ausgabe | Hinweise |
|---|---|---|
{"name":"泉","enabled":true} |
name: 泉
enabled: true |
JSON-Skalare und Unicode werden direkt dargestellt. |
items:
- one
- two |
{"items":["one","two"]} |
Eine YAML-Sequenz wird zum JSON-Array. |
date: 2026-07-29 |
{"date":"2026-07-29"} |
JSON_SCHEMA hält datumsähnliche Werte als Zeichenfolge. |
value: !!js/function >
function() {} |
Fehler |
JavaScript-spezifische Tags sind nicht erlaubt. |
__proto__:
polluted: true |
Blockierter Schlüssel |
Prototypbezogene Namen werden abgewiesen. |
a: &node
self: *node |
Zyklischer Aliasfehler |
Zyklische Objektgraphen lassen sich nicht als JSON serialisieren. |
Unterstütztes Datenmodell
Die Konvertierung ist absichtlich auf die Schnittmenge von JSON und sicherem YAML beschränkt: Objekte, Arrays, Zeichenfolgen, endliche Zahlen, boolesche Werte und null. YAML kann deutlich mehr ausdrücken, darunter Tags, mehrere Dokumente, komplexe Schlüssel und zyklische Referenzen; diese Funktionen werden nicht als allgemeine Konfiguration ausgeführt.
JSON nach YAML parst zuerst Standard-JSON. YAML nach JSON nutzt das JSON-Schema von js-yaml und prüft anschließend rekursiv jeden Wert. Damit werden aus Produktkonfigurationen nicht automatisch Datumswerte, Binärobjekte, reguläre Ausdrücke oder JavaScript-spezifische Werte konstruiert.
- Genau ein Dokument pro Konvertierung.
- Keine benutzerdefinierten oder JavaScript-Tags.
- Nur JSON-kompatible Schlüssel und Werte.
Sicheres Schema und Typen
JSON_SCHEMA erkennt null, boolesche Werte und JSON-kompatible Zahlen, interpretiert aber beispielsweise 2026-07-29 nicht als Date-Objekt. Das reduziert überraschende implizite Typen und macht das Ergebnis für JSON vorhersehbarer.
YAML-Skalare mit oder ohne Anführungszeichen können je nach Grammatik verschiedene Typen ergeben. Setze Anführungszeichen, wenn ein Wert eindeutig Text bleiben soll. Die Zielanwendung muss dennoch ihr eigenes Schema prüfen.
- Datumsähnliche Werte bleiben Text.
- NaN und Infinity sind keine JSON-Zahlen.
- Zahlen mit führenden Nullen sollten bei Bedarf quotiert werden.
Schutz vor Prototype Pollution
Die Namen __proto__, prototype und constructor werden in beliebiger Tiefe blockiert. Solche Schlüssel können in unsicherem Merge-Code die Prototypkette beeinflussen. Zulässige Objekte werden in Objekte ohne benutzerdefinierten Prototyp kopiert, bevor sie serialisiert werden.
Das ist eine zusätzliche Grenze, keine Garantie für nachgelagerte Software. Importierende Anwendungen sollten weiterhin erlaubte Schlüssel definieren, Objekte sicher zusammenführen und nicht vertrauenswürdige Daten nicht in Konfigurationsobjekte mischen.
- Blockierung gilt auch in Arrays verschachtelter Objekte.
- Keine tiefen Merges mit nicht vertrauenswürdigen Eingaben.
- Empfänger brauchen eigene Schema- und Größenlimits.
Anker, Aliase und Präsentationsverlust
YAML-Anker und Aliase können gemeinsame Referenzen ausdrücken. Bei einem azyklischen Graphen wird der Wert für JSON dupliziert; ein Zyklus wird abgelehnt, weil JSON.stringify ihn nicht darstellen kann. Die YAML-Ausgabe deaktiviert automatisch erzeugte Referenzen.
Kommentare, Block- oder Flow-Schreibweise, Anführungszeichenwahl und genaue Abstände existieren im JSON-Datenmodell nicht und gehen bei der Rückkonvertierung verloren. Nutze dieses Werkzeug daher für Datenmigration, nicht als verlustfreien YAML-Quelltextformatter.
- Kommentare werden nicht erhalten.
- Aliasidentität wird nicht erhalten.
- Schlüsselreihenfolge ist keine kanonische Garantie.
- Azyklische Aliase werden als wiederholte JSON-Daten ausgegeben.
Typische Anwendungen
Geeignet sind kleine API-Beispiele, Kubernetes-unabhängige Konfigurationsausschnitte, Test-Fixtures und Daten, die ausdrücklich JSON-kompatibel bleiben sollen. Die Ausgabe erleichtert das Wechseln zwischen maschinenfreundlicher JSON- und menschenlesbarer YAML-Darstellung.
Produktspezifische YAML-Dateien können Tags, Merge-Keys, mehrere Dokumente oder spezielle Skalarregeln erwarten. Prüfe die konvertierte Datei immer mit der tatsächlichen Anwendung, bevor du sie einsetzt.
- Fixtures zwischen Formaten austauschen.
- Ein YAML-Beispiel als JSON inspizieren.
- JSON-kompatible Konfiguration lesbarer darstellen.
Fehler und Grenzen
Leere Eingabe, Syntaxfehler, unbekannte Tags, gefährliche Schlüssel, nicht endliche Zahlen, nicht unterstützte Werte und zyklische Aliase werden klar abgewiesen. Sehr große oder tiefe Dokumente können den Browser belasten.
Das Werkzeug löst keine Umgebungsvariablen auf, führt keine Templates aus, verarbeitet keine Includes und validiert keine Kubernetes- oder Anwendungsressourcen. Es ist auch kein mehrdokumentiger YAML-Editor.
- Keine Code- oder Template-Ausführung.
- Keine externen Referenzen oder Includes.
- Keine semantische Produktschema-Prüfung.
Sicherheit und Werkzeugwahl
YAML ist eine Datensprache, wurde aber historisch mit Parsern verwendet, die gefährliche Objekte konstruieren konnten. Deshalb sind ein eingeschränktes Schema und aktuelle Bibliothek wichtig. Die vorhandene js-yaml-Abhängigkeit wird wiederverwendet; zusätzliche Parser sind nicht nötig.
Nutze den JSON-Formatter für reine Syntax und den JSON–CSV-Konverter für flache Datensätze. Base64 ist nur Kodierung und keine strukturierte Konvertierung.