JSON naar YAML omzetter
Plak JSON en krijg direct YAML. Live conversie in je browser. K8s/Compose-klaar, 2/4 spaties inspringing, slimme aanhalingstekens. 100% privé, geen upload.
Opties · 2 spaties · auto · blok
Wat is YAML en waarom omzetten vanuit JSON?
YAML (YAML Ain't Markup Language) is een door mensen leesbaar dataserialiseringsformaat dat is ontworpen voor configuratiebestanden, infrastructuur als code en overal waar een mens data schrijft die een machine zal lezen. De op inspringing gebaseerde syntaxis vereist geen accolades of haakjes, waardoor het veel leesbaarder is dan JSON voor complexe geneste structuren. Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions, CircleCI en vrijwel elke cloud-native tool gebruikt YAML als primair configuratieformaat. JSON omzetten naar YAML is daardoor een van de meest voorkomende taken in DevOps en backend-ontwikkeling — je ontvangt een resourcedefinitie van een API in JSON, en je hebt een YAML-manifest nodig om te committen naar versiebeheer.
Deze tool heeft vier belangrijke onderscheidende kenmerken ten opzichte van typische online omzetters:
**1. Norway-probleem — Automatisch veilige aanhalingstekens.** De grootste valkuil bij het omzetten van JSON naar YAML is het YAML Norway-probleem. In YAML 1.1 (dat miljoenen productieparsers nog steeds gebruiken, waaronder oudere Kubernetes, PyYAML, Ansible en Ruby's Psych) worden de kale strings yes, no, on, off, y en n verwerkt als boolean true/false-waarden. Dit raakte beroemd de ISO-landcode voor Noorwegen ("NO" → false) en heeft echte productieontwrichtingen in Kubernetes-configuraties veroorzaakt. YAML 1.2 heeft dit opgelost, maar je parsers zijn mogelijk nog niet op 1.2. De standaard Auto-aanhalingstekenmodus van deze tool gebruikt de eemeli/yaml-bibliotheek met het YAML 1.1-schema, waardoor alle Norway-probleemstrings automatisch tussen aanhalingstekens worden geplaatst, wat veilige rondes garandeert via zowel YAML 1.1- als 1.2-parsers. Lees meer in ons begeleidend artikel op Het YAML Norway-probleem en JSON-YAML-verschillen.
**2. Sleutelvolgorde bewaren.** Anders dan sommige omzetters die sleutels alfabetisch sorteren, bewaart deze tool de oorspronkelijke invoegvolgorde van sleutels uit je JSON — wat overeenkomt met het gedrag van JSON.parse() in alle moderne JavaScript-engines. Dit is belangrijk voor Kubernetes-manifests (waarbij apiVersion en kind conventioneel als eerste worden verwacht), OpenAPI-specificaties (waarbij info voor paths staat) en elke configuratie waarbij de volgorde van velden betekenisvol is voor leesbaarheid of diffs.
**3. Voorbehoud grote getallen.** JSON-getallen groter dan 2^53 - 1 (9007199254740991) kunnen niet exact worden weergegeven in JavaScript's IEEE 754 dubbele precisie float. Wanneer JSON.parse() een groot geheel getal leest, zoals een Kubernetes resourceVersion-veld (dat een 64-bit geheel getal is op de server), wordt het stilzwijgend afgekapt. Dit is een fundamentele browserbeperking die alle browsergebaseerde JSON-tools beïnvloedt, inclusief deze. De veilige oplossing is ervoor te zorgen dat grote gehele getallen als strings in je JSON worden opgeslagen voordat je omzet. Deze tool documenteert dit gedrag eerlijk in de veelgemaakte fout 'Precisieverlies bij grote gehele getallen' hieronder.
**4. 100% browsergebaseerde privacy.** Je JSON-data — die vaak API-sleutels, databasegegevens, interne serviceconfiguraties en productiegeheimen bevat — verlaat je browser nooit. Er worden geen gegevens naar een server verzonden. Je kunt dit verifiëren in het tabblad Netwerk van je browser. Dit is de enige veilige manier om gevoelige configuratiedata in een online tool te verwerken. Zie onze begeleidende tool voor de omgekeerde richting op YAML naar JSON omzetter, en onze JSON-formatter als je JSON wilt valideren en mooi afdrukken voordat je omzet.
De door mensen leesbare aard van YAML gaat gepaard met een afweging: het heeft meer parsing-randgevallen dan JSON. Naast het Norway-probleem heeft YAML octale getalleneigenaardigheden (0777 wordt 511 in YAML 1.1), meerdere regels syntaxis voor strings (| voor letterlijk, > voor gevouwen), anker- en aliasreferenties (&anker en *alias), en ondersteuning voor meerdere documenten (--- scheidingsteken). JSON heeft geen van deze complexiteiten — het is een strikt, minimaal formaat met slechts zes gegevenstypen. Voor machine-to-machine gegevensuitwisseling is JSON vrijwel altijd de betere keuze. Voor door mensen bewerkte configuratiebestanden waarbij leesbaarheid en commentaar belangrijk zijn, wint YAML. Deze omzetter geeft je het beste van beide werelden: gebruik JSON programmatisch, zet om naar YAML voor je infrastructuur.
// 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 Kernfuncties
Live conversie
YAML-uitvoer wordt direct bijgewerkt terwijl je JSON typt of plakt — geen Omzetten-knop nodig. Grote invoer (>200 KB) schakelt automatisch over naar handmatige modus om de browser responsief te houden.
2 of 4 spaties inspringing
Schakel tussen 2 spaties (standaard voor Kubernetes, Docker Compose en GitHub Actions) en 4 spaties (Ansible-conventie) inspringing. YAML-tabs zijn verboden — deze tool gebruikt altijd spaties.
Automatisch veilige aanhalingstekens (Norway-veilig)
De standaard Auto-modus gebruikt het YAML 1.1-schema om automatisch aanhalingstekens te plaatsen rond strings zoals "no", "yes", "on", "off", "y" en "n" die door YAML 1.1-parsers als booleans zouden worden gelezen, wat productie-misconfiguraties voorkomt.
Blok- en flowstijlen
Blokstijl geeft ingesprongen, door mensen leesbare YAML die ideaal is voor manifests en configuratiebestanden. Flowstijl geeft compacte, inline YAML vergelijkbaar met JSON — handig voor documentatiefragmenten of tools die minimale uitvoer verkiezen.
100% browsergebaseerde privacy
Alle conversie draait lokaal in je browser via JavaScript. Je JSON-data — inclusief API-sleutels, gegevens en productieconfiguraties — wordt nooit naar een server verzonden, nooit gelogd en nooit opgeslagen.
Werkt met K8s, Compose en Terraform-bestanden
Geoptimaliseerd voor realistische DevOps-gebruiksscenario's: Kubernetes-manifests, Docker Compose-stacks, Helm chart values, GitHub Actions-workflows, OpenAPI-specificaties en Terraform JSON-planuitvoer — met voorbeelden voor elk.
Voorbeelden
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"}}}]}}}} Zet een Kubernetes Deployment-manifest van JSON API-responsformaat om naar YAML, zodat je het kunt toepassen met kubectl apply -f
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":{}}} Zet een Docker Compose-servicedefinitie van JSON om naar het YAML-formaat dat docker compose up vereist
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"}]}}} Zet een GitHub Actions CI-workflowdefinitie van JSON om naar YAML, zodat je het kunt committen naar .github/workflows/
OpenAPI-specificatie
{"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"}}}}}} Zet een OpenAPI 3.0-specificatie van JSON om naar YAML — het voorkeursformaat voor Swagger UI, Redoc en de meeste API-tooling
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"}} Zet een typisch Node.js package.json om naar YAML — handig voor het migreren van projectconfiguratie naar tools die YAML verkiezen
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}}}]} Zet een Terraform JSON-planuitvoer om naar YAML voor menselijke review, GitOps-auditsporen en CI/CD-pipelines — een functie die de meeste omzetters missen
Zo gebruik je het
- 1
Plak je JSON
Voer je JSON-data in of plak deze in het invoerveld hierboven. Je kunt ook op 'Voorbeeld laden' klikken om een voorbeeld te proberen, zoals een Kubernetes Deployment, Docker Compose-bestand of Terraform-plan.
- 2
Bekijk de live YAML-uitvoer
YAML verschijnt direct in het uitvoerpaneel. Pas Opties aan (inspringing 2/4, aanhalingstekens Auto/Dubbel/Enkel, stijl Blok/Flow) om te voldoen aan de vereisten van je doeltool.
- 3
Kopieer of download
Klik op Kopiëren om de YAML naar je klembord te halen, of op Downloaden om het op te slaan als .yaml-bestand dat klaar is voor kubectl apply, docker compose up of een andere tool.
Veelgemaakte fouten bij conversie
Afsluitende komma's
JSON staat geen komma toe na het laatste element in een object of array. Dit komt vaak voor bij het kopiëren uit JavaScript-code, die afsluitende komma's wel toestaat. Verwijder de laatste komma voordat je omzet.
{"name": "Alice", "role": "admin",} {"name": "Alice", "role": "admin"} Enkele aanhalingstekens
JSON vereist dubbele aanhalingstekens voor alle stringwaarden en objectsleutels. Enkele aanhalingstekens zijn geldig in JavaScript en Python, maar zijn een syntaxisfout in JSON.
{'name': 'Alice', 'active': true} {"name": "Alice", "active": true} Sleutels zonder aanhalingstekens
Alle JSON-objectsleutels moeten tussen dubbele aanhalingstekens staan. Sleutels zonder aanhalingstekens zijn geldig in JavaScript-objectliterals maar veroorzaken een verwerkingsfout in strikte JSON.
{name: "Alice", role: "admin"} {"name": "Alice", "role": "admin"} Commentaar niet toegestaan
Standaard JSON ondersteunt geen commentaar van welke soort dan ook — niet //, /* */ of #. Als je commentaar in configuratie nodig hebt, gebruik dan YAML (dat # commentaar ondersteunt) of JSONC (JSON met commentaar, gebruikt door VS Code). Verwijder alle commentaar voordat je data als JSON gebruikt.
{"port": 8080 // HTTP port} {"port": 8080} YAML Norway-probleem (automatisch afgehandeld in Auto-modus)
In YAML 1.1-parsers (gebruikt door Kubernetes, Ansible, PyYAML, Ruby Psych) worden kale strings yes, no, on, off, y en n verwerkt als boolean true/false in plaats van strings. De Auto-modus van deze tool plaatst automatisch aanhalingstekens rond deze waarden in de YAML-uitvoer om veilige rondes via elke YAML 1.1- of 1.2-parser te garanderen. Als je Dubbel of Enkel aanhalingstekenmodus selecteert, worden alle strings expliciet aangehaald, wat het probleem ook voorkomt — maar de Auto-modus geeft de meest natuurlijk uitziende uitvoer.
# 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"
Precisieverlies bij grote gehele getallen
JavaScript kan gehele getallen alleen exact weergeven tot 2^53 - 1 (9007199254740991). JSON-gehele getallen groter dan dit — zoals Kubernetes resourceVersion-velden (die int64 zijn op de server) — worden stilzwijgend afgerond door JSON.parse(). Dit afgekapte getal verschijnt vervolgens in de YAML-uitvoer. Dit is een fundamentele browserbeperking die alle browsergebaseerde JSON-tools beïnvloedt. De veilige oplossing is het opslaan van grote gehele getallen als strings in je JSON voordat je omzet.
// 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) Veelvoorkomende gebruiksscenario's
- Kubernetes-manifests
- Zet JSON API-responses van kubectl get -o json of de Kubernetes-API om naar YAML-manifests voor GitOps-workflows, Kustomize-overlays en kubectl apply -f-implementaties.
- Docker Compose-bestanden
- Transformeer docker inspect JSON-uitvoer of programmatisch gegenereerde serviceconfiguraties naar docker-compose.yaml-bestanden die compatibel zijn met docker compose up en Docker Stack-implementaties.
- Helm chart values
- Zet JSON-configuratie-exports om naar YAML values-bestanden voor Helm chart-implementaties, wat versiebeheerde infrastructuurconfiguratie mogelijk maakt met een heldere YAML-syntaxis.
- GitHub Actions-workflows
- Bouw GitHub Actions-workflowdefinities programmatisch in JSON en zet ze om naar het .github/workflows/*.yaml-formaat dat de GitHub Actions-runner vereist.
- OpenAPI-specificaties
- Zet OpenAPI/Swagger-specificaties van het JSON-formaat dat door veel frameworks (FastAPI, SpringDoc) wordt geretourneerd om naar het YAML-formaat dat de voorkeur heeft van Swagger UI, Redoc en API-gateway-tooling.
- Configuratiemigratie
- Migreer applicatieconfiguratie opgeslagen in JSON (appsettings.json, config.json) naar YAML-formaat voor tools die YAML vereisen of verkiezen, en voeg de mogelijkheid toe om commentaar te gebruiken voor documentatie.
Technische details
- RFC 8259-conforme JSON-verwerking
- JSON-invoer wordt verwerkt via de ingebouwde JSON.parse() van de browser, die volledig voldoet aan RFC 8259. Dit geeft nauwkeurige syntaxisfoutmeldingen inclusief positie-informatie (beste schatting van regel- en kolomnummers) en verwerkt alle JSON-gegevenstypen: strings, getallen, booleans, null, arrays en objecten.
- YAML 1.2-uitvoer via eemeli/yaml Document API met YAML 1.1-schema
- YAML wordt gegenereerd via de eemeli/yaml-bibliotheek (v2.8+, CVE-veilig) via de Document API met version: '1.1'. Deze combinatie geeft YAML 1.2-conforme uitvoer terwijl YAML 1.1-aanhalingstekensregels worden toegepast — wat betekent dat Norway-probleemstrings (yes/no/on/off/y/n) automatisch worden aangehaald in de uitvoer, waardoor ze veilig zijn voor zowel YAML 1.1- als 1.2-parsers. Regelafbreking is uitgeschakeld (lineWidth: 0) om lange strings intact te houden.
- 100% browsergebaseerd — geen upload, geen server
- Alle verwerking vindt volledig plaats in de JavaScript-engine van je browser. Er worden geen gegevens via het netwerk verzonden. Invoer groter dan 200 KB schakelt automatisch over van live-modus naar handmatige modus (waarbij een expliciete klik op Omzetten nodig is) om de browser responsief te houden en blokkering van de hoofdthread tijdens zware serialisatie te voorkomen.
Aanbevolen aanpak
- Gebruik altijd de Auto-aanhalingstekenmodus voor DevOps-configuraties
- Bij het omzetten van JSON voor gebruik in Kubernetes, Helm, Ansible, Docker Compose of GitHub Actions, gebruik altijd de standaard Auto (Norway-veilige) aanhalingstekenmodus. YAML 1.1-parsers in deze tools zullen kale strings yes, no, on, off, y en n stilzwijgend als booleans verwerken — de Auto-modus voorkomt dit transparant.
- Gebruik 2 spaties inspringing voor cloud-native tools
- Kubernetes, Docker Compose, GitHub Actions en Helm gebruiken allemaal conventioneel 2 spaties inspringing. 4 spaties inspringing in deze bestanden gebruiken is geldige YAML maar creëert inconsistentie met communityvoorbeelden, automatisch gegenereerde configuraties en de bestaande manifests van je team.
- Sla grote gehele getallen op als strings voordat je omzet
- Kubernetes resourceVersion, uid en andere int64-velden van de API-server kunnen het veilige gehele getalbereik van JavaScript (2^53 - 1) overschrijden. Als je exacte numerieke precisie nodig hebt, sla deze waarden op als JSON-strings voordat je omzet. Dit is vooral belangrijk voor kubectl get -o json-uitvoer die door de server gegenereerde velden bevat.
- Valideer JSON eerst
- Als je JSON-bron handgeschreven is of afkomstig is van een systeem dat soms ongeldige uitvoer geeft (afsluitende komma's, sleutels zonder aanhalingstekens, commentaar), valideer het dan eerst met een JSON-formatter. Gebruik onze JSON-formatter om syntaxisfouten te vinden en te herstellen, en zet dan de schone JSON om naar YAML.
- Gebruik blokstijl voor bestanden die naar versiebeheer gaan
- Blokstijl YAML geeft schone, door mensen leesbare diffs in Git omdat elk veld op zijn eigen regel staat. Flowstijl (compact, inline) maakt diffs moeilijker te lezen en te reviewen. Bewaar flowstijl voor het insluiten van korte YAML-fragmenten in documentatie of voor tools die compacte uitvoer vereisen.
Veelgestelde vragen
Hoe zet ik JSON online om naar YAML?
Wat is het YAML Norway-probleem en hoe gaat deze tool ermee om?
Waarom is het Norway-probleem belangrijk voor Kubernetes en DevOps?
Moet ik 2 of 4 spaties inspringing gebruiken voor YAML?
Hoe gebruik ik deze tool om een Kubernetes-manifest te maken?
Hoe zet ik een Docker Compose JSON om naar YAML?
Kunnen JSON-getallen groter dan 2^53 precisie verliezen bij het omzetten naar YAML?
Bewaart de omzetter de oorspronkelijke sleutelvolgorde uit mijn JSON?
Wanneer moet ik JSON versus YAML gebruiken?
Hoe kan ik JSON op de commandoregel omzetten naar YAML?
Hoe zet ik JSON om naar YAML in Python, Node.js of Go?
Worden mijn JSON-gegevens naar een server verzonden bij gebruik van deze tool?
Is er een bestandsgroottelimiet voor JSON-invoer?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Online JSON-formatter & validator
Encodering en formattering
Formatteer en valideer JSON direct in je browser. Gratis online tool met syntaxvalidatie, foutdetectie, minificeren en kopiëren met één klik. 100% privé.
URL decoderen en encoderen online
Encodering en formattering
Decodeer of encodeer URL's in realtime met ingebouwde URL-parser. Twee modi: encodeURI en encodeURIComponent. 100% privé, geen data naar servers.
YAML naar JSON omzetter
Encodering en formattering
Plak YAML en krijg direct JSON. Live conversie in je browser. K8s-manifests, OpenAPI-specificaties en Helm values ondersteund. 100% privé, geen upload.
Talstelsel omrekenen — online converter
Omrekentools
Reken je getal direct om tussen binair, hex, decimaal, octaal en elk talstelsel (2-36). Gratis en privé — alles draait in je browser.
Afbeelding comprimeren — online tool
Omrekentools
Comprimeer JPEG, PNG & WebP tot 80% kleiner — in je browser, zonder uploaden. Batch 20 afbeeldingen, stel kwaliteit in, vergelijk voor & na. Gratis & privé.