YAML naar JSON converter

Plak YAML (Kubernetes-manifests, Docker Compose, CI-configuraties) en krijg direct nette JSON. Fouten tonen de exacte regel met een aanwijzer.

Draait in je browserGeen account nodigNiets wordt geüpload

JSON-uitvoer

Zo gebruik je de YAML naar JSON

  1. Plak YAML in het linkerveld of open een .yaml/.yml-bestand.
  2. De JSON verschijnt rechts terwijl je typt. Kies 2 spaties, 4 spaties of tabs voor de uitvoer.
  3. Vink Keys sorteren aan om keys alfabetisch te ordenen. Dat helpt bij het vergelijken van configuraties.
  4. Is de YAML ongeldig, dan toont de statusbalk de regel en kolom, en verschijnen de foute regels eronder met een ^-markering.
  5. Kopieer of download de JSON, of druk op Omwisselen om hem weer naar YAML om te zetten.

Hoe YAML naar JSON wordt vertaald

JSON is een subset van YAML 1.2, dus elke YAML-mapping wordt een JSON-object, elke sequence een array, en scalars worden strings, getallen, booleans of null. Features die alleen YAML heeft, worden tijdens de conversie opgelost:

  • Commentaar (# …) verdwijnt, omdat JSON geen commentaar kent.
  • Anchors en aliassen (&base, *base, <<: *base) worden uitgeschreven tot volledige kopieën.
  • Timestamps zoals 2024-01-02 worden ISO 8601-strings.
  • Strings over meerdere regels (|-literal- en >-folded-blokken) worden gewone strings met \n-escapes.

YAML met meerdere documenten

Eén bestand kan meerdere YAML-documenten bevatten, gescheiden door ---, zoals gebruikelijk bij Kubernetes-manifests. JSON heeft daar geen equivalent voor, dus de converter geeft een JSON-array met één element per document terug en meldt dat in de statusbalk. Een losse --- aan het eind wordt genegeerd.

Valkuilen van YAML 1.1 vs 1.2

Deze converter volgt YAML 1.2, de huidige specificatie. Veel oudere tools (PyYAML, Psych van Ruby, sommige versies van Kubernetes en Ansible) lezen nog YAML 1.1, waar de regels anders zijn:

  • Het Noorwegen-probleem: in YAML 1.1 betekent country: no false, waardoor de landcode van Noorwegen, NO, verdwijnt. Hetzelfde geldt voor yes, on, off, y en n. YAML 1.2 ziet alleen true en false als booleans.
  • Octale getallen: 0755 is octaal in 1.1, maar een gewoon decimaal getal in 1.2, dat 0o755 gebruikt. Zet bestandsrechten voor de zekerheid tussen aanhalingstekens.
  • Sexagesimale getallen: in 1.1 kan 22:30 worden geparsed als het getal 1350. Zet tijden en poorttoewijzingen zoals "8080:80" tussen aanhalingstekens.

De richting JSON → YAML zet dubbelzinnige strings ('no', 'on', 'y') automatisch tussen aanhalingstekens, zodat de gegenereerde YAML in beide versies hetzelfde wordt gelezen.

Veelgestelde vragen

Wordt mijn YAML ergens geüpload?
Nee. Het parsen gebeurt in je browser met de opensourcelibrary js-yaml. Configuraties met secrets of interne hostnamen verlaten nooit je computer.
Waarom faalt mijn YAML met „bad indentation”?
De nesting in YAML wordt bepaald door spaties, en tabs zijn niet toegestaan voor inspringing. Zorg dat keys op hetzelfde niveau precies onder elkaar staan en dat lijstitems (-) consequent inspringen onder hun bovenliggende key.
Wat gebeurt er met YAML-commentaar?
Dat wordt verwijderd. JSON heeft geen syntax voor commentaar, dus het kan niet worden meegenomen. Terug omzetten naar YAML brengt het niet terug.
Waarom bleef <code>no</code> een string?
Deze tool volgt YAML 1.2, waarin alleen true/false booleans zijn. Oudere YAML 1.1-parsers zouden no, yes, on en off omzetten naar booleans (het „Noorwegen-probleem”).
Kan ik een Kubernetes-manifest met meerdere resources omzetten?
Ja. Elke resource gescheiden door --- wordt één element van de JSON-array in de uitvoer, klaar voor jq of kubectl apply -f -, dat ook JSON-lijsten accepteert.

Gerelateerde tools