tigtools

JSON ⇄ YAML-konverterer

Bytt retning, lim inn dataene og få det konverterte resultatet umiddelbart. Nyttig for Kubernetes-manifester, CI-pipelines og appkonfigurasjoner.

Kjører i nettleseren din Ingen registrering

Retning
Innrykk

Slik bruker du det

  1. Velg retning: JSON → YAML eller YAML → JSON.
  2. Lim inn dataene dine eller trykk «Prøv et eksempel». Resultatet oppdateres mens du skriver.
  3. Velg 2 eller 4 mellomrom som innrykk i resultatet.
  4. Kopier eller last ned resultatet. «Bruk resultatet som inndata» bytter retning slik at du kan konvertere tilbake.

Slik fungerer det

Konverteringen bruker åpen kildekode-biblioteket yaml (versjon 2), som implementerer YAML 1.2-spesifikasjonen. YAML 1.2 er i praksis et supersett av JSON, så ethvert JSON-dokument konverteres til YAML uten tap, og YAML som bare bruker mapper, lister, strenger, tall, boolske verdier og null konverteres tilbake til identisk JSON.

Når verktøyet skriver YAML, setter det anførselstegn rundt strenger som leseren kan ta for noe annet. Eldre YAML 1.1-parsere, som PyYAML og mange CI-verktøy, leser yes, no, on og off som boolske verdier, 0777 som et oktalt tall og 2024-01-31 som en dato, så disse skrives som "yes", "0777" og "2024-01-31". Lange strenger blir ikke brettet over flere linjer. Kommentarer kan ikke overføres, fordi JSON ikke har kommentarer.

Når verktøyet leser YAML, utvides ankere (&name) og aliaser (*name), inkludert sammenslåingsnøkkelen <<, og en fil med flere dokumenter atskilt med --- blir en JSON-matrise. For å beskytte nettleseren din er aliasutvidelsen begrenset, noe som stopper «billion laughs»-dokumenter. YAML-verdier uten JSON-ekvivalent konverteres så nærme som mulig: .inf og .nan blir null, og tidsstempler forblir strenger. Syntaksfeil rapporteres med linje og kolonne.

Eksempler

Kubernetes-manifest

En Deployment skrevet som JSON av et skript konverteres til YAML-oppsettet kubectl-brukere forventer, med lister under containers skrevet som - name: web. Verdier som "no" står i anførselstegn slik at de forblir strenger.

CI-konfigurasjon med ankere

En pipeline-fil definerer defaults: &defaults og gjenbruker dem med <<: *defaults. Konvertering til JSON viser nøyaktig hvilke nøkler hver jobb ender opp med etter sammenslåingen.

OpenAPI-spesifikasjon

En OpenAPI-fil vedlikeholdes i YAML, men en kodegenerator trenger JSON. Lim inn YAML-en, velg innrykk med 2 mellomrom og last ned .json-filen.

Ofte stilte spørsmål

Hvorfor er "yes" skrevet i anførselstegn i YAML-en min?

Etter YAML 1.1-reglene, som fortsatt brukes av PyYAML, Ansible og mange andre verktøy, er yes, no, on og off uten anførselstegn boolske verdier. Anførselstegn gjør at verdien forblir en streng i alle parsere. Anførselstegnene er ikke en del av verdien.

Blir YAML-kommentarer beholdt ved konvertering til JSON?

Nei. JSON har ingen kommentarsyntaks, så kommentarer fjernes. Å konvertere JSON-en tilbake til YAML vil ikke gjenopprette dem.

Hva skjer med flere YAML-dokumenter som er atskilt med ---?

De konverteres til én JSON-matrise med ett element per dokument, i rekkefølge. Et enkelt dokument konverteres direkte til sin verdi.

Hva med egendefinerte tagger som CloudFormations !Ref?

Applikasjonsspesifikke tagger forstås ikke. Verktøyet viser en advarsel og konverterer den taggede verdien som en vanlig verdi, så !Ref MyBucket blir strengen «MyBucket», og selve taggen går tapt.

Personvern

Begge retninger kjøres helt i nettleseren din. Dine JSON- eller YAML-data lastes ikke opp, lagres ikke og inkluderes ikke i analyse.