Utilia

JSON naar YAML omzetten

Zet JSON om naar YAML en YAML naar JSON in je browser, met ondersteuning voor anchors, merge keys en bestanden met meerdere documenten. Er wordt niets geüpload.

Omzetting

Zo gebruik je de JSON-naar-YAML-converter

  1. Kies de richting: JSON → YAML of YAML → JSON.
  2. Plak je gegevens, of klik op Bestand openen om een .json-, .yaml- of .yml-bestand te laden (maximaal 10 MB).
  3. Kies de Inspringing (2 of 4 spaties) en eventueel Sleutels sorteren op alfabet.
  4. Klik op Omzetten, of typ gewoon verder: het resultaat wordt automatisch bijgewerkt. Is de invoer ongeldig, dan geeft de foutmelding de regel en kolom van het probleem.
  5. Kopieer of download het resultaat. Richting omdraaien stuurt het resultaat terug naar de invoer om het de andere kant op om te zetten.

JSON en YAML: dezelfde gegevens, andere syntaxis

YAML is in de praktijk een superset van JSON: elk JSON-document beschrijft gegevens die YAML kan uitdrukken, en YAML voegt een lichtere syntaxis toe die voor mensen makkelijker te lezen en te bewerken is. Daarom worden Kubernetes-manifesten, Docker Compose-bestanden, GitHub Actions- en GitLab CI-pipelines, Ansible-playbooks en OpenAPI-specificaties meestal in YAML geschreven, terwijl API’s en programma’s JSON uitwisselen.

Dezelfde gegevens in beide formaten:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

JSON → YAML

De converter schrijft YAML in blokstijl: één sleutel per regel, lijsten met streepjes en geneste objecten ingesprongen. Lange strings worden nooit gevouwen, en strings over meerdere regels gebruiken de letterlijke stijl |, zodat regeleinden exact behouden blijven. Strings die YAML anders als een ander type zou lezen, krijgen aanhalingstekens: "yes", "1.0" of "null" blijven na heen en terug strings. Sleutels sorteren zet de sleutels van elk object op alfabetische volgorde, wat het vergelijken van twee configuratiebestanden makkelijker maakt.

YAML → JSON

De YAML wordt gelezen met het core-schema van YAML 1.2, dezelfde regels die de meeste moderne tools gebruiken:

  • true/false, getallen en null (of ~) worden JSON-waarden; yes, no, on en off blijven strings, zoals de YAML 1.2-specificatie voorschrijft.
  • Anchors en aliassen (&base, *base) worden uitgeschreven, en merge keys (<<: *base), gebruikelijk in CI-bestanden, worden ondersteund.
  • Een bestand met meerdere documenten, gescheiden door ---, wordt een JSON-array met één element per document, en een melding vertelt hoeveel er zijn samengevoegd.
  • Commentaar valt weg, omdat JSON geen commentaar kent.
  • .inf en .nan hebben geen JSON-equivalent; ze worden geschreven als de strings "Infinity" en "NaN".

Om je browser te beschermen tegen “billion laughs”-bestanden, waarin een paar aliassen uitgroeien tot miljarden waarden, wordt een document dat uitgroeit tot meer dan een miljoen waarden geweigerd.

Veelgemaakte fouten in YAML

  • Tabs om in te springen: YAML staat alleen spaties toe.
  • Ongelijke inspringing: items van dezelfde lijst of hetzelfde object moeten in dezelfde kolom beginnen.
  • Geen spatie na de dubbele punt: key:value is één string, terwijl key: value een sleutel-waardepaar is.
  • Speciale tekens zonder aanhalingstekens: een waarde die begint met @, een backtick, *, & of !, of die : of # bevat, moet tussen aanhalingstekens.

Veelgestelde vragen

Wordt mijn bestand naar een server gestuurd?

Nee. De omzetting draait in je browser, en je configuratiebestanden, geheimen of API-gegevens verlaten je computer nooit.

Waarom worden “yes” en “no” niet omgezet naar booleans?

Sinds YAML 1.2 zijn alleen true en false booleans. Oudere YAML 1.1-parsers behandelden yes, no, on en off als booleans, wat het beroemde “Noorwegen-probleem” veroorzaakte (de landcode NO gelezen als false). Deze tool volgt YAML 1.2.

Blijft commentaar in YAML behouden?

Nee. JSON kent geen commentaar, dus het gaat verloren bij YAML → JSON. Bij JSON → YAML kun je achteraf commentaar aan het resultaat toevoegen.

Kan ik een Kubernetes-bestand met meerdere resources omzetten?

Ja. Elke resource die door --- wordt gescheiden, wordt één element van een JSON-array. Zet je die array terug naar YAML, dan krijg je één document met een lijst.

Verandert de converter de volgorde van sleutels?

Niet tenzij je Sleutels sorteren aanvinkt: sleutels houden de volgorde waarin ze in je invoer staan. De enige uitzondering komt van JavaScript zelf: sleutels die gehele getallen zijn, zoals "10" of "2", komen vooraan te staan, in oplopende volgorde.