JSON zu YAML Konverter
JSON einfügen und sofort YAML erhalten. Live-Konvertierung im Browser. K8s/Compose-kompatibel, 2/4-Leerzeichen-Einrückung, intelligentes Quoting. 100 % privat.
Optionen · 2 Leerzeichen · auto · block
Was ist YAML und warum aus JSON konvertieren?
YAML (YAML Ain't Markup Language) ist ein für Menschen lesbares Datenserialisierungsformat, das für Konfigurationsdateien, Infrastructure-as-Code und überall dort konzipiert wurde, wo ein Mensch Daten schreibt, die eine Maschine lesen wird. Seine einrückungsbasierte Syntax erfordert keine geschweiften Klammern oder eckigen Klammern, was es für komplexe verschachtelte Strukturen weit lesbarer als JSON macht. Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions, CircleCI und praktisch jedes Cloud-native Werkzeug verwendet YAML als primäres Konfigurationsformat. Das Konvertieren von JSON nach YAML ist daher eine der häufigsten Aufgaben in DevOps und der Backend-Entwicklung — Sie erhalten eine Ressourcendefinition von einer API als JSON und benötigen ein YAML-Manifest für die Versionskontrolle.
Dieses Werkzeug hat vier wichtige Alleinstellungsmerkmale im Vergleich zu typischen Online-Konvertern:
**1. Norway-Problem — Auto-sichere Anführungszeichen.** Das größte Problem bei der JSON-zu-YAML-Konvertierung ist das YAML-Norway-Problem. In YAML 1.1 (das Millionen von Produktionsparsern noch verwenden, einschließlich älterer Kubernetes-, PyYAML-, Ansible- und Ruby-Psych-Parser) werden die nackten Zeichenketten yes, no, on, off, y und n als boolesche true/false-Werte geparst. Dies betraf berühmt den ISO-Ländercode für Norwegen ("NO" → false) und hat zu echten Produktionsausfällen in Kubernetes-Konfigurationen geführt. YAML 1.2 hat dies behoben, aber Ihre Parser sind möglicherweise nicht auf 1.2. Der standardmäßige Auto-Anführungsmodus dieses Werkzeugs verwendet die eemeli/yaml-Bibliothek mit dem YAML-1.1-Schema und umschließt daher automatisch jede Norway-Problem-Zeichenkette mit Anführungszeichen. Mehr dazu in unserem Begleitartikel unter Das YAML-Norway-Problem und JSON-YAML-Unterschiede.
**2. Erhaltung der Schlüsselreihenfolge.** Im Gegensatz zu einigen Konvertern, die Schlüssel alphabetisch sortieren, behält dieses Werkzeug die ursprüngliche Schlüssel-Einfügereihenfolge aus Ihrem JSON bei. Dies ist wichtig für Kubernetes-Manifeste (bei denen apiVersion und kind konventionell zuerst erwartet werden), OpenAPI-Spezifikationen und jede Konfiguration, bei der die Feldreihenfolge für Lesbarkeit oder Diffs bedeutsam ist.
**3. Einschränkung bei großen Zahlen.** JSON-Zahlen größer als 2^53 - 1 (9007199254740991) können in JavaScripts IEEE-754-Doppelpräzisions-Float nicht exakt dargestellt werden. Dies ist eine grundlegende Browser-JavaScript-Einschränkung, die jedes browserbasierte JSON-Werkzeug betrifft. Die sichere Abhilfe ist, große Ganzzahlen als Zeichenketten in Ihrem JSON zu speichern, bevor Sie konvertieren.
**4. 100 % browserbasierte Privatsphäre.** Ihre JSON-Daten — die oft API-Schlüssel, Datenbankzugangsdaten, interne Service-Konfigurationen und Produktionsgeheimnisse enthalten — verlassen Ihren Browser niemals. Es werden keine Daten an einen Server gesendet. Sehen Sie auch unser Begleitwerkzeug für die umgekehrte Richtung unter YAML zu JSON Konverter und unseren JSON-Formatierer, wenn Sie JSON vor der Konvertierung validieren und formatieren möchten.
// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';
const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');
// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });
const yamlString = doc.toString({
indent: 2,
lineWidth: 0, // disable line wrapping
defaultStringType: 'PLAIN', // Auto mode: only quote when needed
});
console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment Hauptfunktionen
Live-Konvertierung
Die YAML-Ausgabe wird sofort aktualisiert, während Sie JSON tippen oder einfügen — kein Konvertieren-Button nötig. Große Eingaben (>200 KB) wechseln automatisch in den manuellen Modus, um den Browser reaktionsfähig zu halten.
2 oder 4 Leerzeichen Einrückung
Wechseln Sie zwischen 2-Leerzeichen (Standard für Kubernetes, Docker Compose und GitHub Actions) und 4-Leerzeichen (Ansible-Konvention) Einrückung. YAML-Tabs sind verboten — dieses Werkzeug verwendet immer Leerzeichen.
Auto-sichere Anführungszeichen (Norway-sicher)
Der Standard-Auto-Modus verwendet das YAML-1.1-Schema, um Zeichenketten wie "no", "yes", "on", "off", "y" und "n" automatisch in Anführungszeichen zu setzen, die von YAML-1.1-Parsern als boolesche Werte missverstanden würden, was Produktionsfehlkonfigurationen verhindert.
Block- und Flow-Stile
Der Block-Stil erzeugt eingerücktes, menschenlesbares YAML, ideal für Manifeste und Konfigurationsdateien. Der Flow-Stil erzeugt kompaktes, inline YAML ähnlich wie JSON — nützlich für Dokumentationsausschnitte oder Werkzeuge, die minimale Ausgabe bevorzugen.
100 % browserbasierte Privatsphäre
Die gesamte Konvertierung läuft lokal in Ihrem Browser mit JavaScript. Ihre JSON-Daten — einschließlich API-Schlüssel, Zugangsdaten und Produktionskonfigurationen — werden niemals an einen Server gesendet, niemals protokolliert und niemals gespeichert.
Unterstützt K8s-, Compose- und Terraform-Dateien
Optimiert für reale DevOps-Anwendungsfälle: Kubernetes-Manifeste, Docker-Compose-Stacks, Helm-Chart-Werte, GitHub-Actions-Workflows, OpenAPI-Spezifikationen und Terraform-JSON-Planausgaben — mit Beispielen für jeden Fall.
Beispiele
Kubernetes Deployment
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}} Konvertiert ein Kubernetes-Deployment-Manifest vom JSON-API-Antwortformat nach YAML, um es mit kubectl apply -f anzuwenden
Docker Compose
{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}} Konvertiert eine Docker Compose Service-Definition von JSON in das von docker compose up benötigte YAML-Format
GitHub Actions Workflow
{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}} Konvertiert eine GitHub Actions CI-Workflow-Definition von JSON nach YAML, um sie in .github/workflows/ einzuchecken
OpenAPI-Spezifikation
{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}} Konvertiert eine OpenAPI-3.0-Spezifikation von JSON nach YAML — das bevorzugte Format für Swagger UI, Redoc und die meisten API-Werkzeuge
package.json
{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}} Konvertiert eine typische Node.js-package.json nach YAML — nützlich für die Migration von Projektkonfigurationen zu Werkzeugen, die YAML bevorzugen
Terraform JSON Plan
{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]} Konvertiert einen Terraform-JSON-Plan nach YAML für die menschliche Überprüfung, GitOps-Auditpfade und CI/CD-Pipelines — ein Alleinstellungsmerkmal, das die meisten Konverter nicht bieten
Anleitung
- 1
JSON einfügen
Geben Sie Ihre JSON-Daten in das Eingabefeld oben ein oder fügen Sie sie ein. Sie können auch auf „Beispiel laden“ klicken, um ein Beispiel wie ein Kubernetes-Deployment, eine Docker-Compose-Datei oder einen Terraform-Plan auszuprobieren.
- 2
Live-YAML-Ausgabe anzeigen
YAML erscheint sofort im Ausgabebereich. Passen Sie die Optionen an (Einrückung 2/4, Anführungszeichen Auto/Doppelt/Einfach, Stil Block/Flow), um die Anforderungen Ihres Zielwerkzeugs zu erfüllen.
- 3
Kopieren oder Herunterladen
Klicken Sie auf Kopieren, um das YAML in Ihre Zwischenablage zu übernehmen, oder auf Herunterladen, um es als .yaml-Datei zu speichern, die für kubectl apply, docker compose up oder ein anderes Werkzeug bereit ist.
Häufige Konvertierungsfehler
Abschließende Kommas
JSON erlaubt kein Komma nach dem letzten Element in einem Objekt oder Array. Dies kommt häufig beim Kopieren aus JavaScript-Code vor, der abschließende Kommas erlaubt. Entfernen Sie das letzte Komma vor der Konvertierung.
{"name": "Alice", "role": "admin",} {"name": "Alice", "role": "admin"} Einfache Anführungszeichen
JSON erfordert doppelte Anführungszeichen für alle Zeichenkettenwerte und Objektschlüssel. Einfache Anführungszeichen sind in JavaScript und Python gültig, sind aber ein Syntaxfehler in JSON.
{'name': 'Alice', 'active': true} {"name": "Alice", "active": true} Schlüssel ohne Anführungszeichen
Alle JSON-Objektschlüssel müssen in doppelten Anführungszeichen eingeschlossen sein. Schlüssel ohne Anführungszeichen sind in JavaScript-Objektliteralen gültig, verursachen aber in strengem JSON einen Parse-Fehler.
{name: "Alice", role: "admin"} {"name": "Alice", "role": "admin"} Kommentare nicht erlaubt
Standard-JSON unterstützt keinerlei Kommentare — weder //, /* */ noch #. Wenn Sie Kommentare in der Konfiguration benötigen, verwenden Sie YAML (das #-Kommentare unterstützt) oder JSONC (JSON with Comments, von VS Code verwendet). Entfernen Sie alle Kommentare, bevor Sie Daten als JSON verwenden.
{"port": 8080 // HTTP port} {"port": 8080} YAML-Norway-Problem (im Auto-Modus automatisch behandelt)
In YAML-1.1-Parsern (verwendet von Kubernetes, Ansible, PyYAML, Ruby Psych) werden nackte Zeichenketten yes, no, on, off, y und n als boolesche true/false statt als Zeichenketten geparst. Der Auto-Modus dieses Werkzeugs setzt diese Werte in der YAML-Ausgabe automatisch in Anführungszeichen, um sichere Round-Trips durch jeden YAML-1.1- oder -1.2-Parser zu garantieren.
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true # YAML with Auto quoting (safe): country: 'no' enabled: 'yes' # YAML 1.1 parser reads: country="no", enabled="yes"
Präzisionsverlust bei großen Ganzzahlen
JavaScript kann Ganzzahlen nur exakt bis 2^53 - 1 (9007199254740991) darstellen. JSON-Ganzzahlen, die größer sind — wie Kubernetes-resourceVersion-Felder (die auf dem Server int64 sind) — werden beim Parsen durch JSON.parse() stillschweigend gerundet. Diese abgeschnittene Zahl erscheint dann in der YAML-Ausgabe. Dies ist eine grundlegende Browser-JavaScript-Einschränkung, die alle browserbasierten JSON-Werkzeuge betrifft. Die sichere Abhilfe ist, große Ganzzahlen als Zeichenketten in Ihrem JSON zu speichern, bevor Sie konvertieren.
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number // Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact) Häufige Anwendungsfälle
- Kubernetes-Manifeste
- Konvertieren Sie JSON-API-Antworten von kubectl get -o json oder der Kubernetes-API in YAML-Manifeste für GitOps-Workflows, Kustomize-Overlays und kubectl-apply-f-Deployments.
- Docker-Compose-Dateien
- Wandeln Sie docker inspect JSON-Ausgabe oder programmatisch generierte Service-Konfigurationen in docker-compose.yaml-Dateien um, die mit docker compose up und Docker-Stack-Deployments kompatibel sind.
- Helm-Chart-Werte
- Konvertieren Sie JSON-Konfigurationsexporte in YAML-Wertedateien für Helm-Chart-Deployments und ermöglichen Sie so eine versionskontrollierte Infrastrukturkonfiguration mit sauberer YAML-Syntax.
- GitHub-Actions-Workflows
- Erstellen Sie GitHub-Actions-Workflow-Definitionen programmatisch in JSON und konvertieren Sie sie in das von GitHub Actions Runner benötigte .github/workflows/*.yaml-Format.
- OpenAPI-Spezifikationen
- Konvertieren Sie OpenAPI/Swagger-Spezifikationen vom JSON-Format, das von vielen Frameworks zurückgegeben wird (FastAPI, SpringDoc), in das von Swagger UI, Redoc und API-Gateway-Werkzeugen bevorzugte YAML-Format.
- Konfigurationsmigration
- Migrieren Sie Anwendungskonfigurationen, die in JSON gespeichert sind (appsettings.json, config.json), in das YAML-Format für Werkzeuge, die YAML erfordern oder bevorzugen, und fügen Sie die Möglichkeit hinzu, Kommentare zur Dokumentation zu verwenden.
Technische Details
- RFC-8259-konformes JSON-Parsing
- JSON-Eingaben werden mit dem nativen JSON.parse() des Browsers geparst, der vollständig RFC-8259-konform ist. Dies liefert genaue Syntaxfehlermeldungen einschließlich Positionsinformationen und verarbeitet alle JSON-Datentypen: Zeichenketten, Zahlen, boolesche Werte, null, Arrays und Objekte.
- YAML-1.2-Ausgabe über die eemeli/yaml-Document-API mit YAML-1.1-Schema
- YAML wird mit der eemeli/yaml-Bibliothek (v2.8+, CVE-sicher) über ihre Document-API mit version: '1.1' generiert. Diese Kombination erzeugt YAML-1.2-konforme Ausgabe und wendet dabei YAML-1.1-Anführungsregeln an — das bedeutet, Norway-Problem-Zeichenketten (yes/no/on/off/y/n) werden in der Ausgabe automatisch in Anführungszeichen gesetzt, was sie sicher für YAML-1.1- und YAML-1.2-Parser macht. Zeilenumbruch ist deaktiviert (lineWidth: 0), um lange Zeichenketten intakt zu erhalten.
- 100 % browserbasiert — kein Upload, kein Server
- Die gesamte Verarbeitung findet vollständig in der JavaScript-Engine Ihres Browsers statt. Es werden keine Daten über das Netzwerk übertragen. Eingaben größer als 200 KB wechseln automatisch vom Live-Modus in den manuellen Modus (erfordert einen expliziten Konvertieren-Klick), um den Browser reaktionsfähig zu halten und das Blockieren des Haupt-Threads bei umfangreicher Serialisierung zu verhindern.
Best Practices
- Immer Auto-Anführungsmodus für DevOps-Konfigurationen verwenden
- Verwenden Sie beim Konvertieren von JSON für Kubernetes, Helm, Ansible, Docker Compose oder GitHub Actions immer den Standard-Auto-(Norway-sicheren)-Anführungsmodus. YAML-1.1-Parser in diesen Werkzeugen interpretieren nackte yes, no, on, off, y und n stillschweigend als boolesche Werte — der Auto-Modus verhindert dies transparent.
- 2-Leerzeichen-Einrückung für Cloud-native Werkzeuge verwenden
- Kubernetes, Docker Compose, GitHub Actions und Helm verwenden konventionell alle 2-Leerzeichen-Einrückung. Die Verwendung von 4-Leerzeichen-Einrückung in diesen Dateien ist gültiges YAML, führt aber zu Inkonsistenzen mit Community-Beispielen, automatisch generierten Konfigurationen und den vorhandenen Manifesten Ihres Teams.
- Große Ganzzahlen vor der Konvertierung als Zeichenketten speichern
- Kubernetes-resourceVersion, uid und andere int64-Felder vom API-Server können JavaScripts sicheren Ganzzahlbereich (2^53 - 1) überschreiten. Wenn Sie exakte numerische Präzision benötigen, speichern Sie diese Werte als JSON-Zeichenketten vor der Konvertierung. Dies ist besonders wichtig für kubectl-get-o-json-Ausgaben, die vom Server generierte Felder enthalten.
- Zuerst JSON validieren
- Wenn Ihre JSON-Quelle handgeschrieben ist oder von einem System stammt, das gelegentlich ungültige Ausgabe produziert (abschließende Kommas, Schlüssel ohne Anführungszeichen, Kommentare), validieren Sie es mit einem JSON-Formatierer vor der Konvertierung. Verwenden Sie unseren JSON-Formatierer, um Syntaxfehler zuerst zu erkennen und zu beheben, dann das saubere JSON nach YAML zu konvertieren.
- Block-Stil für Dateien in der Versionskontrolle bevorzugen
- Block-Stil-YAML erzeugt saubere, menschenlesbare Diffs in Git, weil jedes Feld in einer eigenen Zeile erscheint. Der Flow-Stil (kompakt, inline) macht Diffs schwieriger zu lesen und zu überprüfen. Reservieren Sie den Flow-Stil für kurze YAML-Ausschnitte in der Dokumentation oder für Werkzeuge, die kompakte Ausgabe erfordern.
Häufig gestellte Fragen
Wie konvertiere ich JSON online nach YAML?
Was ist das YAML-Norway-Problem und wie geht dieses Werkzeug damit um?
Warum ist das Norway-Problem für Kubernetes und DevOps wichtig?
Soll ich 2- oder 4-Leerzeichen-Einrückung für YAML verwenden?
Wie verwende ich dieses Werkzeug, um ein Kubernetes-Manifest zu erstellen?
Wie konvertiere ich ein Docker-Compose-JSON nach YAML?
Können JSON-Zahlen größer als 2^53 beim Konvertieren nach YAML an Präzision verlieren?
Behält der Konverter die ursprüngliche Schlüsselreihenfolge aus meinem JSON bei?
Wann sollte ich JSON statt YAML verwenden?
Wie kann ich JSON über die Befehlszeile nach YAML konvertieren?
Wie konvertiere ich JSON nach YAML in Python, Node.js oder Go?
Werden meine JSON-Daten bei der Verwendung dieses Werkzeugs an einen Server gesendet?
Gibt es eine Dateigrößenbeschränkung für JSON-Eingaben?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →Base64-Dekodierer & -Kodierer
Kodierung & Formatierung
Base64 online kostenlos dekodieren und kodieren. Echtzeitkonvertierung mit voller UTF-8- und Emoji-Unterstützung. 100 % privat — läuft in Ihrem Browser. Keine Anmeldung nötig.
JSON-Formatierer & Validator
Kodierung & Formatierung
JSON sofort im Browser formatieren, validieren und verschönern. Kostenloses Online-Tool mit Syntaxprüfung, Fehlererkennung, Minifizierung und Ein-Klick-Kopie. 100 % privat.
URL-Kodierer & -Dekodierer mit integriertem URL-Parser
Kodierung & Formatierung
URL einfügen zum Dekodieren oder Kodieren in Echtzeit. Integrierter URL-Parser zerlegt jede Komponente in bearbeitbare Felder. Dualmodus: encodeURI & encodeURIComponent. Privat — keine Daten an Server.
YAML zu JSON Konverter
Kodierung & Formatierung
YAML einfügen und sofort JSON erhalten. Live-Konvertierung im Browser. K8s-Manifeste, OpenAPI-Spezifikationen, Helm-Werte unterstützt. 100 % privat.
Zahlensystem-Konverter — Binär, Hex, Dezimal & Oktal
Konvertierungswerkzeuge
Zahlen zwischen Binär, Hexadezimal, Dezimal, Oktal und beliebigen Basen (2–36) sofort konvertieren. Kostenlos, privat, ohne Anmeldung — alles läuft in Ihrem Browser.
Bilder Online Komprimieren — JPEG, PNG & WebP
Konvertierungswerkzeuge
Bildgröße um bis zu 80 % reduzieren — JPEG, PNG & WebP im Browser komprimieren, kein Upload nötig. Stapelverarbeitung für 20 Bilder, Qualität anpassen, Vorher-Nachher vergleichen. Kostenlos & privat.