tigtools

JSON ⇄ YAML -muunnin

Vaihda suuntaa, liitä tiedot ja saat muunnetun tuloksen heti. Hyödyllinen Kubernetes-manifesteille, CI-putkille ja sovellusasetuksille.

Toimii selaimessasi Ei rekisteröitymistä

Suunta
Sisennys

Käyttöohje

  1. Valitse suunta: JSON → YAML tai YAML → JSON.
  2. Liitä tiedot tai paina "Kokeile esimerkkiä". Tulos päivittyy kirjoittaessasi.
  3. Valitse tulosteen sisennykseksi 2 tai 4 välilyöntiä.
  4. Kopioi tai lataa tulos. "Käytä tulosta syötteenä" kääntää suunnan, jotta voit muuntaa takaisin.

Näin se toimii

Muunnos käyttää avoimen lähdekoodin yaml-kirjastoa (versio 2), joka toteuttaa YAML 1.2 -määrittelyn. YAML 1.2 on käytännössä JSON:n yläjoukko, joten mikä tahansa JSON-dokumentti muuntuu YAML:ksi häviöttömästi, ja YAML, joka käyttää vain avain-arvo-pareja, listoja, merkkijonoja, numeroita, totuusarvoja ja null-arvoja, muuntuu takaisin identtiseksi JSON:ksi.

YAML:ää kirjoitettaessa työkalu lainaa merkkijonot, jotka lukija voisi tulkita joksikin muuksi. Vanhemmat YAML 1.1 -jäsentimet, kuten PyYAML ja monet CI-työkalut, tulkitsevat arvot yes, no, on ja off totuusarvoiksi, 0777 oktaaliluvuksi ja 2024-01-31 päivämääräksi, joten nämä kirjoitetaan muodossa "yes", "0777" ja "2024-01-31". Pitkiä merkkijonoja ei taiteta useille riveille. Kommentteja ei voida siirtää, koska JSON:ssa ei ole kommentteja.

YAML:ää luettaessa ankkurit (&name) ja aliakset (*name) laajennetaan, mukaan lukien <<-yhdistämisavain, ja tiedosto, jossa on useita --- -merkillä erotettuja dokumentteja, muuttuu JSON-taulukoksi. Selaimen suojaamiseksi aliasten laajentamista on rajoitettu, mikä estää ”billion laughs” -dokumentit. YAML-arvot, joille ei ole JSON-vastinetta, muunnetaan mahdollisimman lähelle: .inf ja .nan muuttuvat arvoksi null, ja aikaleimat säilyvät merkkijonoina. Syntaksivirheet ilmoitetaan rivi- ja saraketietoineen.

Esimerkit

Kubernetes-manifesti

Skriptin JSON-muodossa kirjoittama Deployment muuntuu YAML-asetteluun, jota kubectl-käyttäjät odottavat, ja containers-kohdan listat kirjoitetaan muodossa - name: web. Arvot kuten "no" pysyvät lainausmerkeissä, jotta ne säilyvät merkkijonoina.

CI-kokoonpano ankkureilla

Pipeline-tiedosto määrittää oletukset: &defaults ja käyttää niitä uudelleen merkinnällä <<: *defaults. JSON-muunnos näyttää tarkalleen, mitkä avaimet kukin työ saa yhdistämisen jälkeen.

OpenAPI-määrittely

OpenAPI-tiedostoa ylläpidetään YAML-muodossa, mutta koodigeneraattori tarvitsee JSON:ia. Liitä YAML, valitse 2 välilyönnin sisennys ja lataa .json-tiedosto.

Usein kysytyt kysymykset

Miksi "yes" on kirjoitettu lainausmerkeissä YAML:ssani?

YAML 1.1:n säännöissä, joita yhä käyttävät PyYAML, Ansible ja monet muut työkalut, lainaamaton yes, no, on tai off on totuusarvo. Lainaaminen pitää sen merkkijonona kaikissa jäsentimissä. Lainausmerkit eivät ole osa arvoa.

Säilyvätkö YAML-kommentit, kun YAML muunnetaan JSON:ksi?

Ei. JSON:ssa ei ole kommenttisyntaksia, joten kommentit jäävät pois. JSON:n muuntaminen takaisin YAML:ksi ei palauta niitä.

Mitä tapahtuu, kun useita YAML-dokumentteja on erotettu toisistaan ---?

Ne muunnetaan yhdeksi JSON-taulukoksi, jossa on yksi alkio kutakin dokumenttia kohden järjestyksessä. Yksittäinen dokumentti muunnetaan suoraan arvokseen.

Entä mukautetut tagit, kuten CloudFormationin !Ref?

Sovelluskohtaisia tageja ei tunnisteta. Työkalu näyttää varoituksen ja muuntaa tagatun arvon tavallisena arvona, joten !Ref MyBucket muuttuu merkkijonoksi "MyBucket" ja itse tagi katoaa.

Tietosuoja

Muunnokset tapahtuvat kokonaan selaimessasi. JSON- tai YAML-tietojasi ei ladata, tallenneta eikä sisällytetä analytiikkaan.