Utilia

JSON–YAML-muunnin

Muunna JSON YAML:ksi ja YAML JSONiksi selaimessa. Ankkurit, yhdistämisavaimet ja usean dokumentin tiedostot tuetaan. Mitään ei lähetetä palvelimelle.

Muunnos

Näin käytät JSON–YAML-muunninta

  1. Valitse suunta: JSON → YAML tai YAML → JSON.
  2. Liitä datasi tai napsauta Avaa tiedosto ladataksesi .json-, .yaml- tai .yml-tiedoston (enintään 10 Mt).
  3. Valitse Sisennys (2 tai 4 välilyöntiä) ja halutessasi Lajittele avaimet aakkosjärjestykseen.
  4. Napsauta Muunna tai jatka kirjoittamista: tulos päivittyy automaattisesti. Jos syöte on virheellinen, virheilmoitus kertoo ongelman rivin ja sarakkeen.
  5. Kopioi tai lataa tulos. Vaihda suunta lähettää tuloksen takaisin syötteeksi, jotta voit muuntaa sen toiseen suuntaan.

JSON ja YAML: sama data, eri syntaksi

YAML on käytännössä JSONin ylijoukko: jokainen JSON-dokumentti kuvaa dataa, jonka YAML pystyy ilmaisemaan, ja YAML lisää kevyemmän syntaksin, jota ihmisen on helpompi lukea ja muokata. Siksi Kubernetes-manifestit, Docker Compose -tiedostot, GitHub Actions- ja GitLab CI -putket, Ansible-playbookit ja OpenAPI-määritykset kirjoitetaan yleensä YAML:llä, kun taas rajapinnat ja ohjelmat vaihtavat JSONia.

Sama data molemmissa muodoissa:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

JSON → YAML

Muunnin kirjoittaa lohkotyylistä YAML:ää: yksi avain riviä kohden, listat ajatusviivoilla ja sisäkkäiset oliot sisennettyinä. Pitkiä merkkijonoja ei koskaan taiteta, ja monirivisissä merkkijonoissa käytetään kirjaimellista |-tyyliä, jotta rivinvaihdot säilyvät täsmälleen. Merkkijonot, jotka YAML muuten lukisi toisena tyyppinä, lainataan: "yes", "1.0" tai "null" pysyvät merkkijonoina edestakaisen muunnoksen jälkeen. Lajittele avaimet järjestää jokaisen olion avaimet aakkosjärjestykseen, mikä helpottaa kahden asetustiedoston vertailua.

YAML → JSON

YAML luetaan YAML 1.2 -ydinskeemalla, samoilla säännöillä, joita useimmat nykyaikaiset työkalut käyttävät:

  • true/false, luvut ja null (tai ~) muuttuvat JSON-arvoiksi. yes, no, on ja off pysyvät merkkijonoina, kuten YAML 1.2 -määritys vaatii.
  • Ankkurit ja aliakset (&base, *base) laajennetaan, ja yhdistämisavaimet (<<: *base), jotka ovat yleisiä CI-tiedostoissa, tuetaan.
  • Tiedosto, jossa on useita ----merkinnällä erotettuja dokumentteja, muuttuu JSON-taulukoksi, jossa on yksi alkio dokumenttia kohden, ja viesti kertoo, montako yhdistettiin.
  • Kommentit pudotetaan, koska JSONissa ei ole kommentteja.
  • .inf ja .nan eivät ole JSONissa mahdollisia. Ne kirjoitetaan merkkijonoina "Infinity" ja "NaN".

Selaimesi suojaamiseksi ”billion laughs” -tiedostoilta, joissa muutama alias laajenee miljardeiksi arvoiksi, dokumentti, joka laajenee yli miljoonaksi arvoksi, hylätään.

Yleisiä YAML-virheitä

  • Sarkaimet sisennykseen: YAML sallii vain välilyönnit.
  • Epäjohdonmukainen sisennys: saman listan tai olion alkioiden on alettava samasta sarakkeesta.
  • Välilyönti puuttuu kaksoispisteen jälkeen: key:value on yksi merkkijono, kun taas key: value on avain–arvo-pari.
  • Lainaamattomat erikoismerkit: arvo, joka alkaa merkillä @, takaheittomerkillä, *, & tai ! tai joka sisältää : tai #, on lainattava.

Usein kysytyt kysymykset

Lähetetäänkö tiedostoni palvelimelle?

Ei. Muunnos tapahtuu selaimessasi, eivätkä asetustiedostosi, salaisuutesi tai rajapintadatasi poistu tietokoneeltasi.

Miksi ”yes” ja ”no” eivät muutu totuusarvoiksi?

YAML 1.2:sta alkaen vain true ja false ovat totuusarvoja. Vanhemmat YAML 1.1 -jäsentimet käsittelivät yes, no, on ja off totuusarvoina, mikä aiheutti kuuluisan ”Norja-ongelman” (maakoodi NO luettiin arvoksi false). Tämä työkalu noudattaa YAML 1.2:ta.

Säilyvätkö YAML-kommentit?

Eivät. JSONissa ei ole kommentteja, joten ne katoavat muunnoksessa YAML → JSON. Kun muunnat JSON → YAML, voit lisätä kommentit tulokseen jälkikäteen.

Voinko muuntaa Kubernetes-tiedoston, jossa on useita resursseja?

Voit. Jokainen ----merkinnällä erotettu resurssi muuttuu JSON-taulukon yhdeksi alkioksi. Taulukon muuntaminen takaisin YAML:ksi antaa yhden dokumentin, joka sisältää listan.

Muuttaako muunnin avainten järjestystä?

Ei, ellet rastita Lajittele avaimet: avaimet säilyttävät järjestyksen, jossa ne esiintyvät syötteessäsi. Ainoa poikkeus tulee JavaScriptistä itsestään: avaimet, jotka ovat kokonaislukuja, kuten "10" tai "2", sijoitetaan ensimmäisiksi nousevassa järjestyksessä.