Mis see tööriist on?
YAML on enamiku tänapäevaste seadistusfailide eelistatud vorming — Kubernetese manifestid, Docker Compose, GitHub Actionsi ja GitLab CI pipeline'id, Ansible playbook'id —, sest see on käsitsi failide muutmisel inimesele loetavam kui JSON: enamiku võtmete ümber pole jutumärke vaja, lõpukomasid pole karta ja kommentaarid on toetatud. JSON on omakorda see, mida enamik API-sid ja programmeerimiskeeli loomupäraselt tekitab ja tarbib.
See tööriist ühendab need kaks, kasutades js-yaml — laialt kasutatavat JavaScripti realisatsiooni YAML spetsifikatsioonist —, nii et parsimine ja genereerimine järgivad samu reegleid, mida rakendaks ka YAML-teadlik tööriist nagu `kubectl` või CI käivitaja.
JSON-i muutmine YAML-iks teeb objektidest taandega key: value plokid ja massiividest `-` eesliitega loendielemendid. YAML-i muutmine JSON-iks teeb vastupidist ja lahendab ka YAML-ile omased tüübilühendid (nagu jutumärkideta `true`, `null` või arvud) nende õigeteks JSON tüüpideks.
Miks seda kasutada?
- Kahesuunaline — muuda JSON YAML-iks või YAML JSON-iks samal ekraanil.
- Standarditel põhinev parsimine ja genereerimine js-yaml'i abil, nii et väljund vastab sellele, mida ootab päris YAML tööriistastik (Kubernetes, CI süsteemid, Ansible).
- Käsitleb pesastatud objekte ja massiive mistahes sügavusel, teisendades YAML-i taandepõhise struktuuri ja JSON-i sulgude vahel.
- Tõlgendab korrektselt YAML-i tüübilühendeid — jutumärkideta true/false, null ja arvväärtused saavad õigeteks JSON tüüpideks, mitte stringideks.
- Kopeeri lõikelauale või laadi alla .json või .yaml failina.
- 100% brauseripoolne — midagi, mida sa kleebid, ei laeta kuhugi üles.
Kuidas kasutada
- Vali suund: "JSON → YAML" või "YAML → JSON".
- Kleebi oma andmed sisestuskasti.
- Klõpsa "Convert".
- Vaata tulemus üle, seejärel kopeeri see või klõpsa "Download", et fail salvestada.
Näide
Sisend
{"name":"Alice","roles":["admin","editor"],"active":true}Tulemus
name: Alice
roles:
- admin
- editor
active: true
Pane tähele, kuidas massiivist saab kriipsudega loend "roles" all ja tõeväärtus jääb jutumärkideta true'ks, mitte ei muutu stringiks "true".
Praktilised nõuanded
- Kubernetese manifesti või GitHub Actionsi töövoo koostamisel: koosta struktuur esmalt JSON-ina (paljud toimetajad ja AI tööriistad genereerivad JSON-it usaldusväärsemalt), seejärel teisenda lõpliku faili jaoks YAML-iks.
- Vigase YAML seadistuse silumine: teisenda see JSON-iks, et näha täpselt, millised väärtused on stringid, arvud või tõeväärtused — YAML-i paindlik süntaks võib peita tüübilahknevusi, mis on JSON-is ilmsed.
- Kui su JSON-is on erimärkidega või numbriga algavaid võtmeid, paneb js-yaml need YAML väljundis automaatselt jutumärkidesse, et need tagasi parsides korrektselt loetaks.
Miks tüübisunnitus on YAML-i kõige keerulisem osa
YAML-i suurim kasutusmugavuse eelis JSON-i ees — enamiku väärtuste ümber pole jutumärke vaja — on ühtlasi ka selle suurim peidetud vigade allikas. Klassikaline näide on nn "Norra probleem": YAML 1.1 (mida kasutavad paljud vanemad parserid) puhul tõlgendatakse jutumärkideta väärtust `no` tõeväärtusena `false`, mitte stringina "no", mis on päriselt lõhkunud riigikoode loetlevaid seadistusfaile, kus Norra jäi kaduma. See tööriist järgib YAML 1.2 spetsifikatsiooni, mis kitsendas jutumärkideta tõeväärtusena tõlgendatavate väärtuste hulga vaid `true` ja `false` peale (ja nende suurtähevariantidele), vähendades — kuigi mitte täielikult kõrvaldamata — seda tüüpi üllatusi. Kui pole kindel, kuidas väärtus tüpiseeritakse, on kõige ohutum see YAML-is selgesõnaliselt jutumärkidesse panna.
Korduma kippuvad küsimused
Kas YAML kommentaarid säilivad JSON-iks ja tagasi teisendamisel?
Ei. JSON-il pole kommentaaride mõistet, seega YAML-i JSON-iks teisendamisel kaovad kõik allika # kommentaarid. Kui teisendad selle JSON-i tagasi YAML-iks, kommentaare tagasi ei teki — see on vormingu enda piirang, mitte tööriista viga.
Kuidas tööriist käsitleb YAML ankruid ja aliaseid (& ja *)?
Aluseks olev parser (js-yaml) lahendab ankrud ja aliased enne JSON-i loomist, seega YAML-fail, mis kasutab & ankruid ja * aliaseid andmeploki korduvaks kasutamiseks, teiseneb JSON-iks nii, et need andmed on igas viitekohas täielikult avatud.
Miks minu YAML arv tuli JSON-is stringina või vastupidi?
Kui väärtus on allika YAML-is jutumärkides (nt version: "3.10"), käsitletakse seda meelega stringina — see on oluline, sest jutumärkideta YAML-arvud nagu 3.10 võivad ujukomaarvuks parsides kaotada lõpunulli. Pane väärtus allika YAML-is jutumärkidesse, kui vajad seda kindlasti tekstina.
Kas ma saan teisendada mitme dokumendiga YAML-faili (eraldatud ----ga)?
See tööriist teisendab korraga ühe YAML dokumendi. Kui su failis on mitu dokumenti --- eraldajatega, teisenda üks osa korraga või eemalda eraldajad ja liida need vajadusel üheks dokumendiks.
Kas mu andmed laetakse kuhugi üles?
Ei. Teisendus toimub täielikult sinu brauseris js-yaml teegi abil — midagi ei saadeta serverisse, mistõttu on ohutu kasutada seda ka päris seadistusfailidega, sealhulgas sisemiste hostinimede või infrastruktuuri detailidega.