Kas ir šis rīks?
YAML ir izvēles formāts lielākajai daļai mūsdienu konfigurācijas failu — Kubernetes manifesti, Docker Compose, GitHub Actions un GitLab CI cauruļvadi, Ansible playbook — jo tas ir lasāmāks cilvēkiem, kas rediģē failus ar roku: nav vajadzīgas pēdiņas ap lielāko daļu atslēgu, nav galīgo komatu, ko sajaukt, un tiek atbalstīti komentāri. JSON savukārt ir tas, ko lielākā daļa API un programmēšanas valodu ģenerē un patērē natīvi.
Šis rīks savieno abus, izmantojot js-yaml, plaši lietotu JavaScript YAML specifikācijas ieviešanu, tāpēc parsēšana un ģenerēšana seko tiem pašiem noteikumiem, ko piemērotu YAML-apzinīgs rīks, piemēram, `kubectl` vai CI izpildītājs.
Pārvēršot JSON uz YAML, objekti kļūst par atkāptiem key: value blokiem, un masīvi — par `-` prefiksētiem saraksta vienumiem. Pārvēršot YAML uz JSON, notiek pretējais, un tiek atrisināti arī YAML specifiskie tipa saīsinājumi (piemēram, bezpēdiņu `true`, `null` vai skaitļi) to pareizos JSON tipos.
Kāpēc to izmantot?
- Divvirzienu — pārvērt JSON uz YAML vai YAML uz JSON no viena un tā paša ekrāna.
- Standartos balstīta parsēšana un ģenerēšana ar js-yaml, tāpēc izvade sakrīt ar to, ko sagaida īsti YAML rīki (Kubernetes, CI sistēmas, Ansible).
- Apstrādā ligzdotus objektus un masīvus jebkurā dziļumā, pārvēršot starp YAML atkāpēs balstīto struktūru un JSON figūriekavām un kvadrātiekavām.
- Pareizi interpretē YAML tipa saīsinājumus — bezpēdiņu true/false, null un skaitliskas vērtības kļūst par pareiziem JSON tipiem, nevis virknēm.
- Kopē starpliktuvē vai lejupielādē kā .json vai .yaml failu.
- 100% klientā — nekas, ko ielīmē, netiek nekur augšupielādēts.
Kā to lietot
- Izvēlies virzienu: "JSON → YAML" vai "YAML → JSON".
- Ielīmē savus datus ievades laukā.
- Nospied "Convert".
- Pārskati rezultātu, tad kopē to vai nospied "Download", lai saglabātu failu.
Piemērs
Ievade
{"name":"Alice","roles":["admin","editor"],"active":true}Izvade
name: Alice
roles:
- admin
- editor
active: true
Pamani, kā masīvs kļūst par ar defisi apzīmētu vienumu sarakstu zem "roles", un bulena vērtība paliek bezpēdiņu true, nevis kļūst par virkni "true".
Praktiski padomi
- Rakstot Kubernetes manifestu vai GitHub Actions darbplūsmu: uzmet struktūru kā JSON (daudzi redaktori un AI rīki uzticamāk ģenerē JSON), tad pārvērt uz YAML gala failam.
- Atkļūdojot YAML konfigurāciju, kas nedarbojas kā vajadzīgs: pārvērt to uz JSON, lai precīzi redzētu, kuras vērtības ir virknes, skaitļi vai buleni — YAML elastīgā sintakse var slēpt tipu neatbilstības, kas JSON ir acīmredzamas.
- Ja tavā JSON ir atslēgas ar īpašām rakstzīmēm vai kas sākas ar ciparu, js-yaml tās YAML izvadē automātiski ietvers pēdiņās, lai tās pareizi parsētos atpakaļ.
Kāpēc tipa piespiešana ir vissarežģītākā YAML daļa
YAML lielākais lietojamības ieguvums salīdzinājumā ar JSON — pēdiņu nepieciešamības trūkums lielākajai daļai vērtību — ir arī tā lielākais smalku kļūdu avots. Klasiskais piemērs ir 'Norvēģijas problēma': YAML 1.1 (ko izmanto daudzi vecāki parseri) bezpēdiņu vērtība `no` tiek interpretēta kā bulena `false`, nevis virkne "no", kas ir salauzusi reālas valstu kodu konfigurācijas, kurās minēta Norvēģija. Šis rīks seko YAML 1.2 specifikācijai, kas sašaurināja bezpēdiņu vērtību kopu, ko uzskata par buleniem, tikai līdz `true` un `false` (un to reģistra variantiem), samazinot — kaut arī pilnībā nenovēršot — šo kļūdu klasi. Ja neesi drošs, kā vērtība tiks tipizēta, drošākā izvēle ir to nepārprotami ietvert pēdiņās YAML.
Biežāk uzdotie jautājumi
Vai YAML komentāri tiek saglabāti, pārvēršot uz JSON un atpakaļ?
Nē. JSON nav komentāru koncepcijas, tāpēc, pārvēršot YAML uz JSON, jebkuri # komentāri avotā tiek zaudēti. Ja pārvērt šo JSON atpakaļ uz YAML, komentāri neparādīsies no jauna — tas ir formāta iedzimts ierobežojums, nevis rīka kļūda.
Kā rīks apstrādā YAML enkurus un aliasus (& un *)?
Pamatā esošais parseris (js-yaml) atrisina enkurus un aliasus pirms JSON ģenerēšanas, tāpēc YAML fails, kas izmanto & enkurus un * aliasus, lai atkārtoti izmantotu datu bloku, pārveidosies par JSON ar šiem datiem pilnībā izvērstiem katrā vietā, kur uz tiem norādīts.
Kāpēc mans YAML skaitlis JSON pārvērtās par virkni, vai otrādi?
Ja vērtība YAML avotā ir pēdiņās (piemēram, version: "3.10"), tā apzināti tiek uzskatīta par virkni — tas ir svarīgi, jo bezpēdiņu YAML skaitļi, piemēram, 3.10, var zaudēt beigu nulli, parsējot kā skaitli ar peldošo komatu. Ievieto pēdiņas avota YAML, ja tev konkrēti nepieciešams, lai vērtība tiktu uzskatīta par tekstu.
Vai varu pārvērst YAML failu ar vairākiem dokumentiem (atdalītiem ar ---)?
Šis rīks vienlaikus pārvērš vienu YAML dokumentu. Ja tavā failā ir vairāki dokumenti, kas atdalīti ar --- marķieriem, pārvērt katru daļu atsevišķi vai, ja tas atbilst tavam gadījumam, vispirms noņem atdalītājus un apvieno tos vienā dokumentā.
Vai mani dati tiek kaut kur augšupielādēti?
Nē. Pārveide notiek pilnībā tavā pārlūkā, izmantojot js-yaml bibliotēku — nekas netiek nosūtīts uz serveri, kas padara to drošu lietošanai ar reālām konfigurācijas datnēm, tostarp tādām, kurās ir iekšēji resursdatoru nosaukumi vai infrastruktūras dati.