§

Plak de JSON of YAML die je wilt converteren.

Modus
Inspringing
Opties
§

Uitvoer

yaml

Pendelen tussen JSON en YAML is dagelijkse kost voor Nederlandse platformteams. Het Kubernetes-platform van Adyen, de containerinfrastructuur van Booking.com en de K8s-adoptie bij ING Bank draaien op YAML-manifesten die kubectl en Helm intern als JSON behandelen. KPN Cloud levert beheerde clusters, TomTom standaardiseert K8s voor mapping en ASML investeert in containerisatie van halfgeleider-tooling. NLnet Labs publiceert DevOps-werk waarin Argo CD ApplicationSets YAML on-the-fly herschrijven, en de Dutch Government Digital Agency hanteert K8s-standaarden voor publieke diensten. GitHub Actions workflow.yml-bestanden, OpenAPI 3-specificaties uit DNB- en NVB-systemen en CloudFormation-templates pendelen elke code review tussen beide formaten — dus de round-trip blijft kritiek voor productie.

Wat is JSON ↔ YAML-conversie?

JSON (JavaScript Object Notation, RFC 8259) is een strikt, door accolades begrensd tekstformaat voor gestructureerde data; YAML (YAML Ain't Markup Language, versie 1.2) is een superset van JSON die voor hetzelfde waardemodel gebruikmaakt van inspringing, regeleindes en een leesbare syntax. Tussen beide converteren laat je dezelfde configuratie pendelen tussen een machinevriendelijke vorm (JSON voor API's, schemavalidatie, programmatische transformaties) en een mensvriendelijke vorm (YAML voor code review, Kubernetes-manifesten, GitHub Actions-workflows) zonder ook maar één sleutel over te typen.

Hoe werkt JSON ↔ YAML-conversie?

Elke conversie draait lokaal in je browser via de meegeleverde js-yaml-bibliotheek (MIT, versie 4.1.0). De belangrijkste stappen zijn:

  1. De modusschakelaar (Automatisch detecteren / JSON → YAML / YAML → JSON) bepaalt welke pipeline draait. In Automatisch detecteren-modus kiest het eerste niet-witruimte-teken van de invoer de richting — { of [ betekent JSON; iets anders betekent YAML.
  2. JSON → YAML: JSON.parse valideert de invoer en produceert een JavaScript-waarde; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) schrijft de YAML 1.2-vorm. Met Multidocument aan wordt een invoer-array per element als één document gedumpt en samengevoegd met ----scheidingstekens.
  3. YAML → JSON: jsyaml.loadAll parseert elk document in de invoer (verwerkt ----scheidingstekens automatisch) tot een array; bij invoer met één document wordt het uitgepakt zodat de JSON-uitvoer het document zelf is, niet een array met één element.
  4. Inspringing (2 of 4 spaties) en Pretty-print zijn instelbaar. Met Pretty-print uit wordt geminificeerde JSON gegenereerd via JSON.stringify(value) zonder witruimte.
  5. De uitvoer wordt naar het alleen-lezen tekstveld geschreven. Bij YAML-parsefouten bevat het foutbericht het 1-geïndexeerde regel- en kolomnummer dat js-yaml's e.mark rapporteert, zodat je meteen naar de fout kunt springen.

Waarom JSON en YAML met deze tool converteren?

  • Privacy: elke parse-, transform- en emit-stap gebeurt in je browser. De data — inclusief Kubernetes-secrets, ondertekende JWT's en proprietary configs — bereikt onze servers nooit.
  • Multidocument-YAML: jsyaml.loadAll herkent ----scheidingstekens en retourneert een array van documenten, die de converter uitpakt voor single-document-gevallen of als JSON-array bewaart voor multi-document-gevallen.
  • Anchors en aliases opgelost: het &anchor / *alias-mechanisme van YAML wordt afgehandeld door het standaardschema van js-yaml. Een waarde die eenmaal is gedefinieerd en tweemaal wordt gerefereerd, round-tript naar een JSON-object waarin alle verwijzingen gelijke waarden bevatten.
  • Geen CDN, geen telemetrie: de bibliotheek js-yaml.min.js wordt vanuit dezelfde origin als de pagina geserveerd, dus de tool werkt offline, achter corporate proxies en in air-gapped omgevingen.

Wat zijn veelvoorkomende toepassingen van JSON ↔ YAML-conversie?

Pendelen tussen JSON en YAML duikt overal op in DevOps, platform engineering en API-tooling:

  • Kubernetes-manifesten: een YAML Deployment, ConfigMap of HelmRelease naar JSON converteren zodat een interne policy-validator (Joi, Ajv, OPA Rego) hem programmatisch kan linten, en dan terug naar YAML voor de cluster-apply.
  • CI/CD-workflows: een GitHub Actions workflow.yml round-trippen via JSON zodat een code-generator de matrix of job-dependencies kan herschrijven, en daarna opgeruimde YAML emitteren voor de PR.
  • OpenAPI-specs: een JSON openapi.json uit de autogenerated docs van een backend plakken en converteren naar openapi.yaml voor de handmatig bewerkte referentie in de repo.

Hoe ziet een JSON ↔ YAML round-trip-voorbeeld eruit?

{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} plakken en op CONVERTEREN drukken in JSON → YAML-modus levert acht regels ingesprongen YAML op met apiVersion: apps/v1 op de eerste regel. Die YAML terug invoeren in YAML → JSON-modus met Pretty-print aan retourneert het originele object byte voor byte na een stabiele JSON.stringify(value, null, 2), met behoud van sleutelvolgorde omdat het standaardschema van js-yaml de invoegvolgorde in beide richtingen respecteert.

Draait deze JSON ↔ YAML-converter volledig in mijn browser?

Ja. Elke parse-, transform- en emit-stap draait lokaal als JavaScript in je browsertab. De meegeleverde js-yaml-bibliotheek wordt vanuit dezelfde origin als de pagina geserveerd — geen CDN, geen fetch, geen XMLHttpRequest, geen navigator.sendBeacon op de invoer. De tool werkt ook offline zodra de pagina geladen is, omdat het een statische HTML/CSS/JS-bundel is met de vendor-bibliotheek ernaast gekopieerd. Kubernetes-secrets, JWT-payloads, ondertekende CloudFormation-YAML's en proprietary configs blijven op je apparaat.

Hoe gaat de converter om met multidocument-YAML?

YAML ondersteunt meerdere documenten in één stream, gescheiden door regels die alleen --- bevatten. Bij YAML → JSON roept de converter jsyaml.loadAll aan, die elk document teruggeeft als JavaScript-waarde. Wordt precies één document gevonden, dan is de JSON-uitvoer dat document direct; bij twee of meer is de JSON-uitvoer een array. Bij JSON → YAML, wanneer de invoer een JSON-array is EN de Multidocument-schakelaar aanstaat, wordt elk array-element als eigen document geëmitteerd met ----scheidingstekens ertussen — handig om een kubectl apply-vriendelijke bundel te genereren uit een JSON-array van resources.

Worden YAML-anchors en -aliases ondersteund?

Ja — &anchor-definities en *alias-verwijzingen worden tijdens de load-stap opgelost door het standaardschema van js-yaml. Een YAML-invoer zoals defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d parseert naar een JSON-object waarin job_a en job_b beide retries: 3, timeout: 30 bevatten. De merge-sleutel << (een YAML 1.1-extensie die js-yaml nog steeds honoreert) wordt ook ondersteund in het standaardschema.

Worden YAML-commentaren behouden bij conversie naar JSON en terug?

Nee — js-yaml verwijdert commentaren tijdens de parse-stap, dus een YAML → JSON → YAML round-trip verliest elke regel met een #-prefix. Dit is een bekende beperking van het load/dump-model; als commentaarbehoud kritiek is, gebruik dan een comment-aware library zoals het yaml npm-pakket (dat een CST + AST-API biedt ontworpen om trivia te behouden) in plaats van js-yaml. Voor de meeste config-conversie-workflows is die afweging acceptabel: de round-getripte YAML behoudt elke sleutel, waarde, anchor en alias, alleen zonder de door mensen geschreven commentaren.

Wat gebeurt er met aangepaste YAML-tags?

De converter gebruikt js-yaml's DEFAULT_SCHEMA, die !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary en !!timestamp begrijpt — elke tag in de YAML 1.2 core- en JSON-schema's. Aangepaste of applicatiespecifieke tags (bijv. !Ref in CloudFormation, !vault in Ansible) worden niet herkend en geven een duidelijke fout met de niet-ondersteunde tag. Voor CloudFormation specifiek: gebruik de aws cloudformation package + --output-template-file-flow om aangepaste tags uit te vouwen voor je in deze converter plakt.

Deze JSON ↔ YAML-converter wordt geleverd met js-yaml@4.1.0 meegebundeld vanaf dezelfde origin, ondersteunt multidocument-streams en anchors/aliases out of the box, en rapporteert YAML-parsefouten met regel en kolom zodat je de bron kunt fixen. Geen upload, geen CDN, geen telemetrie — elke byte blijft in je browser.