Utilia

JSON į YAML keitiklis

Konvertuok JSON į YAML ir YAML į JSON naršyklėje, su palaikomais inkarais, sujungimo raktais ir kelių dokumentų failais. Nieko neįkeliama.

Konvertavimas

Kaip naudotis JSON į YAML keitikliu

  1. Pasirink kryptį: JSON → YAML arba YAML → JSON.
  2. Įklijuok duomenis arba spustelėk Atidaryti failą, kad įkeltum .json, .yaml ar .yml failą (iki 10 MB).
  3. Pasirink Įtrauka (2 ar 4 tarpai) ir, jei nori, Rūšiuoti raktus abėcėlės tvarka.
  4. Spustelėk Konvertuoti arba tiesiog rašyk toliau: rezultatas atsinaujina automatiškai. Jei įvestis netinkama, klaidos pranešime nurodyta problemos eilutė ir stulpelis.
  5. Nukopijuok arba atsisiųsk rezultatą. Pakeisti kryptį grąžina rezultatą į įvestį, kad galėtum konvertuoti į kitą pusę.

JSON ir YAML: tie patys duomenys, kita sintaksė

Praktiškai YAML yra JSON viršaibis: kiekvienas JSON dokumentas aprašo duomenis, kuriuos gali išreikšti YAML, o YAML prideda lengvesnę sintaksę, kurią žmonėms lengviau skaityti ir redaguoti. Todėl Kubernetes manifestai, Docker Compose failai, GitHub Actions ir GitLab CI srautai, Ansible vadovai bei OpenAPI specifikacijos dažniausiai rašomi YAML, o API ir programos keičiasi JSON.

Tie patys duomenys abiem formatais:

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

JSON → YAML

Keitiklis rašo blokinio stiliaus YAML: vienas raktas eilutėje, sąrašai su brūkšneliais, įdėti objektai įtraukti. Ilgos eilutės niekada nelaužomos, o daugiaeilutės eilutės naudoja pažodinį | stilių, kad eilučių lūžiai išliktų tiksliai. Eilutės, kurias YAML kitu atveju skaitytų kaip kitą tipą, apgaubiamos kabutėmis: "yes", "1.0" ar "null" po apvalios kelionės lieka eilutėmis. Rūšiuoti raktus kiekvieno objekto raktus išdėsto abėcėlės tvarka, todėl du konfigūracijos failus lengviau palyginti.

YAML → JSON

YAML skaitomas pagal YAML 1.2 pagrindinę schemą, t. y. tas pačias taisykles, kurias naudoja dauguma šiuolaikinių įrankių:

  • true/false, skaičiai ir null (ar ~) tampa JSON reikšmėmis; yes, no, on ir off lieka eilutėmis, kaip reikalauja YAML 1.2 specifikacija.
  • Inkarai ir aliasai (&base, *base) išskleidžiami, o sujungimo raktai (<<: *base), dažni CI failuose, palaikomi.
  • Failas su keliais dokumentais, atskirtais ---, tampa JSON masyvu su vienu elementu kiekvienam dokumentui, o pranešimas nurodo, kiek jų sujungta.
  • Komentarai atmetami, nes JSON komentarų neturi.
  • .inf ir .nan neturi JSON atitikmens; jie rašomi kaip eilutės "Infinity" ir "NaN".

Siekiant apsaugoti tavo naršyklę nuo „milijardo juokų“ failų, kuriuose keli aliasai išsiskleidžia į milijardus reikšmių, dokumentas, išsiskleidžiantis į daugiau nei milijoną reikšmių, atmetamas.

Dažnos YAML klaidos

  • Tabuliacijos įtraukai: YAML leidžia tik tarpus.
  • Nenuosekli įtrauka: to paties sąrašo ar objekto elementai turi prasidėti tame pačiame stulpelyje.
  • Trūksta tarpo po dvitaškio: key:value yra viena eilutė, o key: value – rakto ir reikšmės pora.
  • Specialieji simboliai be kabučių: reikšmė, prasidedanti @, atvirkštine kabute, *, & ar !, arba turinti : ar #, turi būti apgaubta kabutėmis.

Dažnai užduodami klausimai

Ar mano failas siunčiamas į serverį?

Ne. Konvertavimas vyksta tavo naršyklėje, o konfigūracijos failai, paslaptys ar API duomenys niekada nepalieka tavo kompiuterio.

Kodėl „yes“ ir „no“ nekonvertuojami į loginius tipus?

Nuo YAML 1.2 loginiai tipai yra tik true ir false. Senesni YAML 1.1 analizatoriai yes, no, on ir off laikė loginiais tipais, o tai sukėlė garsiąją „Norvegijos problemą“ (šalies kodas NO perskaitytas kaip false). Šis įrankis laikosi YAML 1.2.

Ar YAML komentarai išsaugomi?

Ne. JSON komentarų neturi, todėl konvertuojant YAML → JSON jie prarandami. Konvertuojant JSON → YAML komentarus į rezultatą gali pridėti vėliau.

Ar galiu konvertuoti Kubernetes failą su keliais ištekliais?

Taip. Kiekvienas išteklius, atskirtas ---, tampa vienu JSON masyvo elementu. Konvertavus tą masyvą atgal į YAML gaunamas vienas dokumentas su sąrašu.

Ar keitiklis keičia raktų tvarką?

Ne, nebent pažymėsi Rūšiuoti raktus: raktai išlaiko tvarką, kuria pateikti įvestyje. Vienintelė išimtis kyla iš paties JavaScript: raktai, kurie yra sveikieji skaičiai, pavyzdžiui, "10" ar "2", dedami pirmi didėjimo tvarka.