YAML
YAML-konverterare
Konvertera mellan YAML och JSON åt båda hållen.
Om YAML och JSON
YAML och JSON beskriver samma strukturer — mappningar, listor, strängar, tal, booleaner — med olika skiljetecken. YAML bygger på indentering och skrivs för hand; JSON är explicit och är det som de flesta API:er och bibliotek faktiskt läser. Konverteringen är i huvudsak mekanisk, med reservationen att YAML har funktioner, som kommentarer och ankare, som JSON helt enkelt inte kan uttrycka.
YAML:s typregler är snävare än de ser ut. Endast true/false (och varianter som True eller TRUE) tolkas som booleaner — yes, no, on och off lämnas som vanliga strängar, till skillnad från vissa äldre YAML-tolkar som behandlade dem som booleaner också, en avvikelse känd online som "Norge-problemet" eftersom landskoden NO tyst kunde bli false. En vanligare överraskning här gäller precision: JSON-tal är IEEE-754-flyttal med dubbel precision, så ett 64-bitars heltal bortom 2^53 kan förlora en siffra eller två i samma stund det konverteras, trots att det ursprungliga YAML-värdet var exakt.
Var du stöter på det
- Göra om ett Kubernetes-manifest eller en docker-compose-fil till JSON för ett skript
- Klistra in ett API-svar i en konfigurationsfil som förväntar sig YAML
- Kontrollera att en CI-pipelinedefinition tolkas som du tänkt dig
- Jämföra två konfigurationsformat vid byte mellan verktyg
Vanliga frågor
Vad händer med mina kommentarer?
De försvinner. JSON har ingen kommentarssyntax, så när YAML konverteras till JSON tas varje #-rad bort permanent. Behåll YAML-originalet om kommentarerna spelar roll.
Stöds ankare och alias?
Ja, och de expanderas till värdet de pekar på, eftersom JSON inte kan representera en referens. Alias som pekar på andra alias växer mycket snabbt, så konverteringar som skulle bli ett enormt dokument avvisas i stället för att försökas.
Sparas mina data?
Nej. Konverteringen sker på servern enbart för den begäran; därefter loggas eller sparas ingenting.
Varför ändrades mitt stora heltal något efter konvertering till JSON?
JSON representerar alla tal som IEEE-754-flyttal med dubbel precision — samma numeriska typ som JavaScript använder —, som bara kan hålla heltal exakt upp till 2^53 (9 007 199 254 740 991). Ett YAML-värde som ett 64-bitars databas-ID eller ett Discord-liknande snowflake-ID kan överskrida det, och att konvertera det till ett JSON-tal avrundar det då tyst. Om exakt precision spelar roll, håll sådana värden citerade som YAML-strängar innan konvertering, så att de kommer igenom som JSON-strängar i stället för tal.