Skip to content

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.

Kein Tracking Läuft im Browser Kostenlos
Optionen · 2 Leerzeichen · auto · block
Einrückung
Stil
0 Zeichen
YAML Ausgabe
0 Zeilen
Geprüft auf RFC-8259-Konformität, YAML-1.2-Spezifikationsausgabe und korrekte Behandlung des Norway-Problems — Go Tools Engineering Team · May 4, 2026

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. 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. 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. 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.

✗ Falsch
{"name": "Alice", "role": "admin",}
✓ Richtig
{"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.

✗ Falsch
{'name': 'Alice', 'active': true}
✓ Richtig
{"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.

✗ Falsch
{name: "Alice", role: "admin"}
✓ Richtig
{"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.

✗ Falsch
{"port": 8080 // HTTP port}
✓ Richtig
{"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.

✗ Falsch
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true
✓ Richtig
# 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.

✗ Falsch
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number
✓ Richtig
// 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?
Fügen Sie Ihr JSON in das Eingabefeld oben ein. Das Werkzeug konvertiert es sofort im Browser nach YAML — kein Klick auf einen Button nötig. Sie können Einrückung (2 oder 4 Leerzeichen), Anführungsstil (Auto, Doppelt oder Einfach) und Ausgabestil (Block oder Flow) im Optionsbereich anpassen. Sobald das YAML im Ausgabebereich erscheint, klicken Sie auf Kopieren, um es in die Zwischenablage zu übernehmen, oder auf Herunterladen, um es als .yaml-Datei zu speichern. Alles läuft lokal — Ihre Daten verlassen niemals Ihr Gerät.
Was ist das YAML-Norway-Problem und wie geht dieses Werkzeug damit um?
Das YAML-Norway-Problem bezeichnet eine Eigenheit der YAML-1.1-Spezifikation, bei der nackte Zeichenketten wie "no", "yes", "on", "off", "y" und "n" als boolesche Werte (false/true) statt als Zeichenketten geparst werden. Dies führte zu einem berühmten Praxisproblem, bei dem der ISO-Ländercode für Norwegen ("NO") in Ansible-Playbooks und Kubernetes-Konfigurationen fälschlicherweise als boolesches false gelesen wurde. In YAML 1.2 wurde dies behoben — nackte Zeichenketten sind immer Zeichenketten. Allerdings verwenden Millionen von Produktionsparsern (ältere Kubernetes-Versionen, PyYAML, Ansible, Ruby Psych) noch immer YAML 1.1. Der Auto-Anführungsmodus dieses Werkzeugs (die Standardeinstellung) umschließt Norway-Problem-Zeichenketten automatisch mit Anführungszeichen, sodass sie sowohl durch YAML-1.1- als auch YAML-1.2-Parser sicher weitergegeben werden. Wenn Norway-Problem-Zeichenketten in Ihrer Eingabe erkannt werden, listet ein Warnhinweis genau auf, welche Werte automatisch in Anführungszeichen gesetzt wurden.
Warum ist das Norway-Problem für Kubernetes und DevOps wichtig?
Kubernetes-YAML-Manifeste, Helm-Chart-Werte, Ansible-Playbooks und GitHub-Actions-Workflows werden alle von Werkzeugen geparst, die historisch YAML 1.1 verwenden. Wenn ein Konfigurationsschlüssel den Wert "no" hat (z. B. ein Ländercode, ein aktivierter Flag als Zeichenkette oder ein benutzerdefiniertes boolesches Feld), wandelt ein YAML-1.1-Parser ihn stillschweigend in das boolesche false um. Dies kann zu schwer zu debuggenden Fehlkonfigurationen führen, weil das YAML als Text korrekt aussieht, sich aber beim Parsen anders verhält. Verwenden Sie immer den Auto-Anführungsmodus, wenn Sie JSON für Kubernetes oder eine andere DevOps-Toolchain konvertieren.
Soll ich 2- oder 4-Leerzeichen-Einrückung für YAML verwenden?
Verwenden Sie 2-Leerzeichen-Einrückung für Kubernetes-Manifeste, Helm-Werte, Docker-Compose-Dateien und GitHub-Actions-Workflows — diese Werkzeuge sind auf 2-Leerzeichen-YAML ausgelegt, und es ist die Community-Konvention. Verwenden Sie 4-Leerzeichen-Einrückung für Ansible-Playbooks (die einer 4-Leerzeichen-Konvention folgen) und wenn Ihr Team oder Ihre Organisation einen Stilguide hat, der dies vorschreibt. YAML verbietet Tabs vollständig — alle Einrückungen müssen Leerzeichen sein. Dieses Werkzeug verwendet standardmäßig 2 Leerzeichen, was für die große Mehrheit der Cloud-nativen Anwendungsfälle die richtige Wahl ist.
Wie verwende ich dieses Werkzeug, um ein Kubernetes-Manifest zu erstellen?
Wenn Sie eine Kubernetes-Ressourcendefinition in JSON haben (aus kubectl get deployment my-app -o json, einer API-Antwort oder einem Terraform-Ressourcenblock), fügen Sie sie in das Eingabefeld ein. Wählen Sie 2-Leerzeichen-Einrückung (Standard) und Auto-Anführungszeichen (Standard, die das Norway-Problem behandeln). Die YAML-Ausgabe ist sofort für kubectl apply -f bereit. Sie können auch auf Herunterladen klicken, um die Datei mit der Erweiterung .yaml zu speichern. Das K8s-Deployment-Beispiel oben zeigt ein vollständiges Deployment-Manifest, das Sie laden und anpassen können.
Wie konvertiere ich ein Docker-Compose-JSON nach YAML?
Fügen Sie Ihr Docker-Compose-JSON in das Eingabefeld ein. Verwenden Sie 2-Leerzeichen-Einrückung (Docker-Compose-Konvention) und Block-Stil. Das Ausgabe-YAML ist kompatibel mit docker compose up, docker compose config und Docker Stack. Ein häufiges Szenario ist der Export der Konfiguration eines laufenden Stacks mit docker inspect und die anschließende Konvertierung zurück in eine compose.yaml-Datei. Das Docker-Compose-Beispiel oben enthält Service-Definitionen mit Ports, Umgebungsvariablen, Volumes und depends_on.
Können JSON-Zahlen größer als 2^53 beim Konvertieren nach YAML an Präzision verlieren?
Ja. Dies ist eine grundlegende JavaScript-Einschränkung: Der IEEE-754-Doppelpräzisions-Float, der von JavaScripts Number-Typ verwendet wird, kann Ganzzahlen nur exakt bis 2^53 - 1 (9007199254740991) darstellen. Jede darüber hinausgehende Ganzzahl — wie Kubernetes-resourceVersion-Felder (die auf dem Server int64 sind) — wird beim Parsen durch JSON.parse() stillschweigend gerundet. Diese abgeschnittene Zahl erscheint dann in Ihrer YAML-Ausgabe. Dies betrifft alle browserbasierten JSON-Werkzeuge, nicht nur dieses. Die sichere Abhilfe ist, große Ganzzahlen als Zeichenketten in Ihrem JSON zu speichern ("resourceVersion": "9007199254740993") — sie erscheinen dann als YAML-Zeichenketten ohne Präzisionsverlust.
Behält der Konverter die ursprüngliche Schlüsselreihenfolge aus meinem JSON bei?
Ja. Die von diesem Werkzeug verwendete eemeli/yaml-Bibliothek behält die Einfügereihenfolge bei, was dem Verhalten von JSON.parse() in allen modernen JavaScript-Engines (V8, SpiderMonkey, JavaScriptCore) entspricht. Schlüssel erscheinen in der YAML-Ausgabe in derselben Reihenfolge wie in der JSON-Eingabe. Dies ist wichtig für Kubernetes-Manifeste und OpenAPI-Spezifikationen, bei denen die Feldreihenfolge oft für die Lesbarkeit und Diffs wichtig ist.
Wann sollte ich JSON statt YAML verwenden?
Verwenden Sie JSON, wenn: Sie APIs und Webdienste erstellen (JSON ist das universelle Austauschformat), wenn die Geschwindigkeit des maschinellen Parsens wichtig ist, wenn Sie strikte Typsicherheit benötigen oder wenn der Verbraucher eine JavaScript/TypeScript-Anwendung ist. Verwenden Sie YAML, wenn: Sie Konfigurationsdateien schreiben, die für die menschliche Bearbeitung gedacht sind (Kubernetes-Manifeste, CI/CD-Pipelines, Ansible-Playbooks, Helm-Werte), wenn Sie Kommentare in Ihrer Konfiguration möchten oder wenn Lesbarkeit wichtiger ist als Striktheit. Eine hilfreiche Faustregel: Wenn eine Maschine es zuerst schreibt oder liest, verwenden Sie JSON; wenn ein Mensch es schreibt und eine Maschine es liest, verwenden Sie YAML.
Wie kann ich JSON über die Befehlszeile nach YAML konvertieren?
Der beliebteste Ansatz ist die Kombination von yq und jq. Installieren Sie yq (Mike Farahs Version, nicht die Python-Version): brew install yq auf macOS oder wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq für Linux. Dann führen Sie aus: cat input.json | yq -P für die Pretty-Print-Ausgabe als YAML. Alternativ: yq -o yaml input.json oder cat input.json | python3 -c "import sys, json, yaml; yaml.dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)". Für Kubernetes speziell: kubectl get deployment my-app -o yaml konvertiert direkt aus der Cluster-API.
Wie konvertiere ich JSON nach YAML in Python, Node.js oder Go?
In Python: import json, yaml; yaml.dump(json.load(open('input.json')), open('output.yaml', 'w'), default_flow_style=False) mit PyYAML, oder ruamel.yaml für Round-Trip-Treue. In Node.js: import { Document } from 'yaml'; const doc = new Document(JSON.parse(input), { version: '1.1' }); const result = doc.toString({ indent: 2, lineWidth: 0 }) — das ist dieselbe Bibliothek und derselbe Ansatz wie dieses Werkzeug. In Go: import gopkg.in/yaml.v3; json.Unmarshal(jsonBytes, &data); yaml.Marshal(data) — beachten Sie, dass Go YAML v3 standardmäßig YAML 1.1 verwendet, sodass Norway-Problem-Zeichenketten automatisch in Anführungszeichen gesetzt werden.
Werden meine JSON-Daten bei der Verwendung dieses Werkzeugs an einen Server gesendet?
Nein. Die gesamte Konvertierung findet vollständig in Ihrem Browser mit JavaScript statt. Ihre JSON-Daten werden niemals über das Netzwerk übertragen, niemals auf einem Server gespeichert und niemals protokolliert oder analysiert. Dies macht das Werkzeug sicher für die Verwendung mit API-Schlüsseln, Datenbankzugangsdaten, internen Konfigurationsdateien, Produktions-Kubernetes-Manifesten und anderen sensiblen Daten. Sie können dies überprüfen, indem Sie die Netzwerk-Registerkarte Ihres Browsers öffnen — Sie werden sehen, dass das Einfügen von JSON keine Anfragen auslöst.
Gibt es eine Dateigrößenbeschränkung für JSON-Eingaben?
Es gibt keine harte Dateigrößenbeschränkung, aber große Eingaben (über 200 KB) schalten automatisch vom Live-Modus in den manuellen Modus um. Im manuellen Modus erscheint ein Konvertieren-Button und die Konvertierung läuft nur, wenn Sie darauf klicken — dies verhindert, dass der Haupt-Thread des Browsers bei jedem Tastendruck für 200-500 ms blockiert. Für sehr große JSON-Dateien (mehrere Megabyte) sollten Sie Befehlszeilenwerkzeuge wie yq oder jq für bessere Leistung verwenden. Das Werkzeug verarbeitet typische Echtzeit-Nutzlasten effizient: vollständige Kubernetes-Namespace-Exporte, große OpenAPI-Spezifikationen und Docker-Compose-Dateien mit mehreren Services.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →