Zo gebruik je deze tool
- Kies de richting: JSON → YAML of YAML → JSON.
- Plak uw gegevens of klik op ‘Probeer een voorbeeld’. Het resultaat wordt bijgewerkt terwijl u typt.
- Kies voor de uitvoer een inspringing van 2 of 4 spaties.
- Kopieer of download het resultaat. Met ‘Uitvoer als invoer gebruiken’ keert u de richting om, zodat u de gegevens terug kunt omzetten.
Hoe het werkt
De conversie gebruikt de opensourcebibliotheek yaml (versie 2), die de YAML 1.2-specificatie implementeert. YAML 1.2 is in de praktijk een superset van JSON. Daarom kan elk JSON-document zonder gegevensverlies naar YAML worden omgezet, en kan YAML met alleen maps, lijsten, tekenreeksen, getallen, booleans en null weer worden omgezet naar identieke JSON.
Bij het schrijven van YAML zet de tool aanhalingstekens rond tekenreeksen die voor iets anders kunnen worden aangezien. Oudere YAML 1.1-parsers, zoals PyYAML en veel CI-tools, lezen yes, no, on en off als booleans, 0777 als een octaal getal en 2024-01-31 als een datum. Daarom worden deze waarden geschreven als "yes", "0777" en "2024-01-31". Lange tekenreeksen worden niet over meerdere regels verdeeld. Opmerkingen kunnen niet worden meegenomen, omdat JSON geen opmerkingen ondersteunt.
Bij het lezen van YAML worden anchors (&name) en aliassen (*name) uitgebreid, inclusief de samenvoegsleutel <<. Een bestand met meerdere documenten, gescheiden door ---, wordt omgezet naar een JSON-array. Om uw browser te beschermen, is het uitbreiden van aliassen beperkt; zo worden documenten met de “billion laughs”-aanval tegengehouden. YAML-waarden zonder JSON-equivalent worden zo nauwkeurig mogelijk omgezet: .inf en .nan worden null en tijdstempels blijven tekenreeksen. Syntaxfouten worden gemeld met hun regel- en kolomnummer.
Voorbeelden
Kubernetes-manifest
Een script schrijft een Deployment als JSON. De conversie zet dit om naar de YAML-indeling die kubectl-gebruikers verwachten, met lijsten onder containers die worden weergegeven als - name: web. Waarden zoals "no" blijven tussen aanhalingstekens staan, zodat het tekenreeksen blijven.
CI-configuratie met anchors
Een pipelinebestand definieert standaardwaarden met: &defaults en gebruikt deze opnieuw met <<: *defaults. Door het bestand naar JSON om te zetten, ziet u precies welke sleutels elke taak na het samenvoegen krijgt.
OpenAPI-specificatie
Een OpenAPI-bestand wordt bijgehouden in YAML, maar een codegenerator heeft JSON nodig. Plak de YAML, kies een inspringing van 2 spaties en download het .json-bestand.
Veelgestelde vragen
Waarom staat "yes" in mijn YAML tussen aanhalingstekens?
Volgens de YAML 1.1-regels, die nog steeds worden gebruikt door PyYAML, Ansible en veel andere tools, is een yes, no, on of off zonder aanhalingstekens een boolean. Met aanhalingstekens blijft het in elke parser een tekenreeks. De aanhalingstekens maken geen deel uit van de waarde.
Blijven YAML-opmerkingen behouden bij het omzetten naar JSON?
Nee. JSON heeft geen syntaxis voor opmerkingen, dus die worden verwijderd. Als u de JSON weer naar YAML omzet, worden de opmerkingen niet teruggezet.
Wat gebeurt er met meerdere YAML-documenten die door --- zijn gescheiden?
Ze worden omgezet naar één JSON-array met voor elk document één element, in dezelfde volgorde. Eén document wordt rechtstreeks naar de bijbehorende waarde omgezet.
Hoe zit het met aangepaste tags, zoals !Ref van CloudFormation?
Tags die specifiek zijn voor een applicatie worden niet herkend. De tool toont een waarschuwing en zet de getagde waarde om als een gewone waarde. Zo wordt !Ref MyBucket de tekenreeks "MyBucket" en gaat de tag zelf verloren.
Privacy
Beide richtingen worden volledig in uw browser verwerkt. Uw JSON of YAML wordt niet geüpload, opgeslagen of opgenomen in analytics.