CodeKitHub
JSON-työkalut

JSON ↔ YAML-muunnin

Viimeksi päivitetty:

Kun JSON muunnetaan YAML:ksi, objekteista tulee sisennettyjä avain: arvo -lohkoja ja taulukoista `-`-merkillä alkavia listaelementtejä — käänteinen muunnos purkaa YAML:n tyyppioikotiet, kuten lainaamattoman true, null tai numerot, takaisin oikeiksi JSON-tyypeiksi. Tämä työkalu tekee muunnoksen kumpaankin suuntaan, kokonaan selaimessasi.

Mikä tämä työkalu on?

YAML on useimpien modernien asetustiedostojen ykkösvalinta — Kubernetes-manifestit, Docker Compose, GitHub Actionsin ja GitLab CI:n putket, Ansible-playbookit — koska se on luettavampi ihmiselle käsin muokattaessa: useimmat avaimet eivät vaadi lainausmerkkejä, ei ylimääräisiä pilkkuja epäonnistuttavaksi, ja kommentit ovat tuettuja. JSON puolestaan on se, mitä useimmat API:t ja ohjelmointikielet tuottavat ja kuluttavat natiivisti.

Tämä työkalu yhdistää nämä kaksi käyttäen kirjastoa js-yaml, laajalti käytettyä JavaScript-toteutusta YAML-määrityksestä, joten jäsennys ja tuotto noudattavat samoja sääntöjä kuin YAML-tietoinen työkalu, kuten `kubectl` tai CI-ajuri, soveltaisi.

JSON:n muuntaminen YAML:ksi muuttaa objektit sisennetyiksi avain: arvo -lohkoiksi ja taulukot `-`-merkillä alkaviksi listaelementeiksi. YAML:n muuntaminen JSON:ksi tekee päinvastoin ja purkaa myös YAML:lle ominaiset tyyppioikotiet (kuten lainaamattoman `true`, `null` tai numerot) niiden oikeiksi JSON-tyypeiksi.

Miksi käyttää sitä?

  • Kaksisuuntainen — muunna JSON YAML:ksi tai YAML JSON:ksi samalla näytöllä.
  • Standardinmukainen jäsennys ja tuotto js-yamlin kautta, joten tulos vastaa sitä, mitä oikea YAML-työkalusto (Kubernetes, CI-järjestelmät, Ansible) odottaa.
  • Käsittelee sisäkkäiset objektit ja taulukot missä tahansa syvyydessä, muuntaen YAML:n sisennyspohjaisen rakenteen ja JSON:n aaltosulkeiden/hakasulkeiden välillä.
  • Tulkitsee YAML:n tyyppioikotiet oikein — lainaamattomista true/false-arvoista, null-arvosta ja numeerisista arvoista tulee oikeat JSON-tyypit merkkijonojen sijaan.
  • Kopioi leikepöydälle tai lataa .json- tai .yaml-tiedostona.
  • 100 % selaimessa toimiva — mitään liittämääsi ei lähetetä minnekään.

Käyttöohje

  1. Valitse suunta: "JSON → YAML" tai "YAML → JSON".
  2. Liitä data syötekenttään.
  3. Klikkaa "Muunna".
  4. Tarkista tulos ja kopioi se tai lataa tiedosto "Lataa"-painikkeella.

Esimerkki

Syöte

{"name":"Alice","roles":["admin","editor"],"active":true}

Tuloste

name: Alice
roles:
  - admin
  - editor
active: true

Huomaa, miten taulukosta tulee viivalla merkitty lista "roles"-avaimen alla ja totuusarvo pysyy lainaamattomana true-arvona merkkijonon "true" sijaan.

Käytännön vinkkejä

  • Kubernetes-manifestin tai GitHub Actions -työnkulun kirjoittaminen: luonnostele rakenne ensin JSON:na (monet editorit ja tekoälytyökalut tuottavat JSON:ia luotettavammin), muunna sitten YAML:ksi lopullista tiedostoa varten.
  • Väärin toimivan YAML-konfiguraation vianetsintä: muunna se JSON:ksi nähdäksesi tarkalleen, mitkä arvot ovat merkkijonoja, numeroita tai totuusarvoja — YAML:n joustava syntaksi voi piilottaa tyyppiristiriitoja, jotka ovat ilmeisiä JSON:ssa.
  • Jos JSON:ssasi on avaimia, joissa on erikoismerkkejä tai jotka alkavat numerolla, js-yaml lainaa ne automaattisesti YAML-tulosteessa, jotta ne jäsentyvät oikein takaisin.

Miksi tyyppipäättely on YAML:n hankalin osa

YAML:n suurin käytettävyysetu JSON:iin verrattuna — se, ettei useimpien arvojen ympärille tarvita lainausmerkkejä — on myös sen suurin hienovaraisten virheiden lähde. Klassinen esimerkki on "Norja-ongelma": YAML 1.1:ssä (jota monet vanhemmat jäsentimet käyttävät) lainaamaton arvo `no` tulkitaan totuusarvoksi `false`, ei merkkijonoksi "no", mikä on rikkonut oikeita maakoodikonfiguraatioita, joissa on listattu Norja. Tämä työkalu noudattaa YAML 1.2 -määritystä, joka kavensi lainaamattomien, totuusarvoiksi tulkittavien arvojen joukon vain arvoihin `true` ja `false` (sekä niiden kirjainkokovariantteihin), mikä vähentää — muttei poista — tätä ongelmaluokkaa. Kun olet epävarma siitä, miten arvo tulkitaan tyypiltään, sen eksplisiittinen lainaaminen YAML:ssa on turvallisin valinta.

Usein kysytyt kysymykset

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

Ei. JSON:ssa ei ole kommenttikäsitettä, joten YAML:n muuntaminen JSON:ksi hävittää kaikki lähteen #-kommentit. Jos muunnat sen JSON:n takaisin YAML:ksi, kommentit eivät palaudu — tämä on muodon sisäänrakennettu rajoitus, ei työkalun virhe.

Miten työkalu käsittelee YAML-ankkureita ja aliaksia (& ja *)?

Taustalla oleva jäsennin (js-yaml) purkaa ankkurit ja aliakset ennen JSON:n tuottamista, joten YAML-tiedosto, joka käyttää &-ankkureita ja *-aliaksia datalohkon uudelleenkäyttöön, muuntuu JSON:ksi siten, että data on kirjoitettu kokonaisuudessaan jokaiseen kohtaan, jossa siihen viitataan.

Miksi YAML-numeroni tuli JSON:ssa merkkijonona, tai päinvastoin?

Jos arvo on lainausmerkeissä YAML-lähteessä (esim. version: "3.10"), se käsitellään tarkoituksella merkkijonona — tämä on tärkeää, koska lainaamattomat YAML-numerot kuten 3.10 voivat menettää lopun nollan liukulukuna jäsennettäessä. Lainaa arvo lähde-YAML:ssa, jos tarvitset sen nimenomaan tekstinä.

Voinko muuntaa YAML-tiedoston, jossa on useita dokumentteja (erotettu ---:llä)?

Tämä työkalu muuntaa yhden YAML-dokumentin kerrallaan. Jos tiedostossasi on useita ----merkeillä erotettuja dokumentteja, muunna yksi osa kerrallaan tai poista erottimet ja yhdistä ne yhdeksi dokumentiksi ensin, jos se sopii käyttötarkoitukseesi.

Lähetetäänkö dataani minnekään?

Ei. Muunnos tapahtuu kokonaan selaimessasi js-yaml-kirjaston avulla — mitään ei lähetetä palvelimelle, mikä tekee siitä turvallisen myös oikeiden asetustiedostojen kanssa, mukaan lukien sisäisiä isäntänimiä tai infrastruktuurin yksityiskohtia sisältävät tiedostot.

Liittyvät työkalut