Kas yra šis įrankis?
YAML yra pageidaujamas formatas daugumai šiuolaikinių konfigūracijos failų – Kubernetes manifestams, Docker Compose, GitHub Actions ir GitLab CI konvejeriams, Ansible playbooks – nes jis skaitomesnis nei JSON žmonėms, redaguojantiems failus ranka: nereikia kabučių aplink daugumą raktų, nereikia bijoti galinių kablelių, ir palaikomi komentarai. JSON tuo tarpu yra tai, ką dauguma API ir programavimo kalbų natyviai sukuria ir naudoja.
Šis įrankis sujungia abu naudodamas js-yaml, plačiai naudojamą YAML specifikacijos „JavaScript" įgyvendinimą, tad perpynimas ir generavimas seka tas pačias taisykles, kurias taikytų YAML suprantantis įrankis kaip `kubectl` ar CI vykdytojas.
JSON konvertavimas į YAML paverčia objektus atitrauktais raktas: reikšmė blokais, o masyvus – `-` priešdėlio sąrašo elementais. YAML konvertavimas į JSON daro priešingai, ir taip pat išsprendžia YAML specifinius tipo trumpinius (kaip necituotas `true`, `null`, ar skaičius) į jų tinkamus JSON tipus.
Kodėl jį naudoti?
- Dvikryptis – konvertuokite JSON į YAML arba YAML į JSON tame pačiame ekrane.
- Standartais pagrįstas perpynimas ir generavimas per js-yaml, tad išvestis atitinka tai, ko tikisi tikri YAML įrankiai (Kubernetes, CI sistemos, Ansible).
- Apdoroja įdėtinius objektus ir masyvus bet kokiame gylyje, konvertuodamas tarp YAML atitraukimu pagrįstos struktūros ir JSON riestinių bei laužtinių skliaustų.
- Teisingai interpretuoja YAML tipo trumpinius – necituoti true/false, null ir skaitinės reikšmės tampa jų tinkamais JSON tipais, o ne eilutėmis.
- Kopijuoti į iškarpinę arba atsisiųsti kaip .json ar .yaml failą.
- 100% vietinis apdorojimas – niekas, ką įklijuojate, niekur neįkeliama.
Kaip naudoti
- Pasirinkite kryptį: „JSON → YAML" arba „YAML → JSON".
- Įklijuokite savo duomenis į įvesties langelį.
- Spustelėkite „Konvertuoti".
- Peržiūrėkite rezultatą, tada nukopijuokite jį arba spustelėkite „Atsisiųsti", kad išsaugotumėte failą.
Pavyzdys
Įvestis
{"name":"Alice","roles":["admin","editor"],"active":true}Išvestis
name: Alice
roles:
- admin
- editor
active: true
Atkreipkite dėmesį, kaip masyvas tampa brūkšneliu žymėtų elementų sąrašu po „roles", o loginis dydis lieka necituotas true, o ne tampa eilute "true".
Praktiniai patarimai
- Rašote Kubernetes manifestą ar GitHub Actions darbo eigą: nubraižykite struktūrą kaip JSON (daug redaktorių ir AI įrankių patikimiau generuoja JSON), tada konvertuokite į YAML galutiniam failui.
- Derinate netinkamai veikiančią YAML konfigūraciją: konvertuokite ją į JSON, kad matytumėte tiksliai, kurios reikšmės yra eilutės, skaičiai ar loginiai dydžiai – YAML lankstus sintaksė gali paslėpti tipo neatitikimus, kurie akivaizdūs JSON.
- Jei jūsų JSON turi raktus su specialiais simboliais ar prasidedančius skaičiumi, js-yaml automatiškai juos cituos YAML išvestyje, kad jie teisingai vėl perpintų.
Kodėl tipo priverstinis nustatymas yra sudėtingiausia YAML dalis
Didžiausias YAML naudingumo pranašumas prieš JSON – kabučių nereikalavimas aplink daugumą reikšmių – taip pat yra didžiausias subtilių klaidų šaltinis. Klasikinis pavyzdys yra „Norvegijos problema": YAML 1.1 (naudojama daugelio senesnių analizatorių) necituota reikšmė `no` interpretuojama kaip loginis dydis `false`, ne eilutė "no", kas realiame gyvenime sugadino šalies kodo konfigūracijas, išvardijančias Norvegiją. Šis įrankis seka YAML 1.2 specifikaciją, kuri susiaurino necituotų reikšmių, laikomų loginiais dydžiais, aibę tik iki `true` ir `false` (ir jų raidžių dydžio variantų), sumažindama – nors ir neišnaikindama – šios netikėtumų klasės. Kai abejojate, kaip reikšmė bus tipizuota, aiškus jos cituojimas jūsų YAML yra saugiausias pasirinkimas.
Dažniausiai užduodami klausimai
Ar YAML komentarai išsaugomi konvertuojant į JSON ir atgal?
Ne. JSON neturi komentarų sąvokos, tad konvertuojant YAML į JSON, bet kokie # komentarai šaltinyje atmetami. Jei konvertuosite tą JSON atgal į YAML, komentarai vėl nepasirodys – tai būdingas formato apribojimas, ne įrankio klaida.
Kaip įrankis apdoroja YAML inkarus ir aliasus (& ir *)?
Pagrindinis analizatorius (js-yaml) išsprendžia inkarus ir aliasus prieš sukurdamas JSON, tad YAML failas, naudojantis & inkarus ir * aliasus duomenų bloko pakartotiniam naudojimui, konvertuosis į JSON su tais duomenimis pilnai išplėstais kiekvienoje vietoje, kur jie nurodomi.
Kodėl mano YAML skaičius atėjo kaip eilutė JSON, arba atvirkščiai?
Jei reikšmė cituota YAML šaltinyje (pvz., version: "3.10"), ji tikslingai laikoma eilute – tai svarbu, nes necituoti YAML skaičiai kaip 3.10 gali prarasti galinį nulį perpinami kaip slankiojo kablelio skaičius. Cituokite reikšmę šaltinio YAML, jei konkrečiai norite, kad ji būtų laikoma tekstu.
Ar galiu konvertuoti YAML failą su keliais dokumentais (atskirtais ---)?
Šis įrankis konvertuoja vieną YAML dokumentą vienu metu. Jei jūsų failas turi kelis dokumentus, atskirtus --- žymomis, konvertuokite po vieną skyrių, arba pirmiausia pašalinkite skirtukus ir sujunkite juos į vieną dokumentą, jei tai tinka jūsų naudojimo atvejui.
Ar mano duomenys kur nors įkeliami?
Ne. Konvertavimas vyksta visiškai jūsų naršyklėje per js-yaml biblioteką – niekas nesiunčiama į serverį, todėl saugu naudoti su tikrais konfigūracijos failais, įskaitant tuos, kurie turi vidinius pagrindinio kompiuterio vardus ar infrastruktūros detales.