tigtools

JSON ⇄ YAML-konverter

Skift retning, indsæt dine data, og få det konverterede resultat med det samme. Nyttigt til Kubernetes-manifester, CI-pipelines og app-konfigurationer.

Kører i din browser Ingen tilmelding

Retning
Indrykning

Sådan bruger du det

  1. Vælg retning: JSON → YAML eller YAML → JSON.
  2. Indsæt dine data, eller tryk på „Prøv et eksempel“. Resultatet opdateres, mens du skriver.
  3. Vælg indrykning med 2 eller 4 mellemrum i outputtet.
  4. Kopier eller download resultatet. „Brug output som input“ vender retningen, så du kan konvertere tilbage.

Sådan fungerer det

Konverteringen bruger open source-biblioteket yaml (version 2), som implementerer YAML 1.2-specifikationen. YAML 1.2 er i praksis et supersæt af JSON, så ethvert JSON-dokument konverteres til YAML uden tab, og YAML, der kun bruger maps, lister, strenge, tal, booleans og null, konverteres tilbage til identisk JSON.

Når værktøjet skriver YAML, sætter det anførselstegn om strenge, som en læser kunne opfatte som noget andet. Ældre YAML 1.1-parsere, f.eks. PyYAML og mange CI-værktøjer, læser yes, no, on og off som booleans, 0777 som et oktalt tal og 2024-01-31 som en dato, så disse skrives som "yes", "0777" og "2024-01-31". Lange strenge foldes ikke over flere linjer. Kommentarer kan ikke overføres, fordi JSON ikke har kommentarer.

Når værktøjet læser YAML, udfoldes ankre (&name) og aliaser (*name), herunder sammenfletningsnøglen <<, og en fil med flere dokumenter adskilt af --- bliver til et JSON-array. For at beskytte din browser er aliasudfoldning begrænset, hvilket stopper "billion laughs"-dokumenter. YAML-værdier uden et JSON-modstykke konverteres så tæt som muligt: .inf og .nan bliver til null, og tidsstempler forbliver strenge. Syntaksfejl rapporteres med linje og kolonne.

Eksempler

Kubernetes-manifest

Et Deployment skrevet som JSON af et script konverteres til det YAML-layout, som kubectl-brugere forventer, med lister under containers skrevet som - name: web. Værdier som "no" forbliver i anførselstegn, så de forbliver strenge.

CI-konfiguration med ankre

En pipeline-fil definerer defaults: &defaults og genbruger dem med <<: *defaults. Konvertering til JSON viser præcis, hvilke nøgler hvert job ender med efter sammenfletningen.

OpenAPI-specifikation

En OpenAPI-fil vedligeholdes i YAML, men en kodegenerator har brug for JSON. Indsæt YAML, vælg indrykning med 2 mellemrum, og download .json-filen.

Ofte stillede spørgsmål

Hvorfor står "yes" i anførselstegn i mit YAML?

Under YAML 1.1-reglerne, som stadig bruges af PyYAML, Ansible og mange andre værktøjer, er et yes, no, on eller off uden anførselstegn en boolesk værdi. Anførselstegn holder det som en streng i alle parsere. Anførselstegnene er ikke en del af værdien.

Bevares YAML-kommentarer ved konvertering til JSON?

Nej. JSON har ingen kommentarsyntaks, så kommentarer fjernes. Konvertering af JSON tilbage til YAML genskaber dem ikke.

Hvad sker der med flere YAML-dokumenter adskilt af ---?

De konverteres til ét JSON-array med ét element pr. dokument i rækkefølge. Et enkelt dokument konverteres direkte til sin værdi.

Hvad med brugerdefinerede tags som CloudFormations !Ref?

Applikationsspecifikke tags forstås ikke. Værktøjet viser en advarsel og konverterer den taggede værdi som en almindelig værdi, så !Ref MyBucket bliver til strengen "MyBucket", og selve tagget går tabt.

Privatliv

Begge retninger kører helt i din browser. Din JSON eller YAML uploades, gemmes eller medtages ikke i analyser.