CodeKitHub
JSON orodja

Pretvornik JSON ↔ YAML

Nazadnje posodobljeno:

Za pretvorbo JSON-a v YAML objekti postanejo zamaknjeni bloki ključ: vrednost, polja pa postanejo elementi seznama s predpono `-` — obratna pretvorba razreši YAML bližnjice za tipe, kot so neobdani true, null ali števila, nazaj v prave JSON tipe. To orodje izvede to pretvorbo, v obe smeri, v celoti v tvojem brskalniku.

Kaj je to orodje?

YAML je format izbire za večino sodobnih konfiguracijskih datotek — manifeste Kubernetes, Docker Compose, cevovode GitHub Actions in GitLab CI, priročnike Ansible — ker je za ljudi, ki ročno urejajo datoteke, berljivejši od JSON-a: pri večini ključev narekovaji niso potrebni, ni zaključnih vejic, ki bi jih narobe postavil, in komentarji so podprti. JSON pa je tisto, kar večina API-jev in programskih jezikov naravno proizvaja in porablja.

To orodje premosti oba z uporabo js-yaml, splošno uporabljene implementacije specifikacije YAML v JavaScriptu, tako da razčlenjevanje in ustvarjanje sledita istim pravilom, kot bi jih uporabilo orodje, ki pozna YAML, kot je `kubectl` ali izvajalec CI.

Pretvorba JSON-a v YAML spremeni objekte v zamaknjene bloke ključ: vrednost, polja pa v elemente seznama s predpono `-`. Pretvorba YAML-a v JSON naredi obratno, poleg tega pa razreši bližnjice za tipe, specifične za YAML (kot so neobdani `true`, `null` ali števila), v njihove prave JSON tipe.

Zakaj ga uporabiti?

  • Dvosmerno — pretvori JSON v YAML ali YAML v JSON z istega zaslona.
  • Razčlenjevanje in ustvarjanje na osnovi standardov prek js-yaml, tako da izhod ustreza tistemu, kar pričakuje prava YAML orodja (Kubernetes, sistemi CI, Ansible).
  • Obravnava gnezdene objekte in polja na poljubni globini, s pretvarjanjem med YAML-ovo strukturo na osnovi zamikov in JSON-ovimi zavitimi in oglatimi oklepaji.
  • Pravilno razlaga YAML bližnjice za tipe — neobdani true/false, null in numerične vrednosti postanejo pravi JSON tipi namesto nizov.
  • Kopiraj v odložišče ali prenesi kot datoteko .json ali .yaml.
  • 100 % odjemalsko — nič, kar prilepiš, se nikamor ne naloži.

Kako ga uporabljati

  1. Izberi smer: "JSON → YAML" ali "YAML → JSON".
  2. Prilepi svoje podatke v vhodno polje.
  3. Klikni "Pretvori".
  4. Preglej rezultat, nato ga kopiraj ali klikni "Prenesi", da shraniš datoteko.

Primer

Vnos

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

Rezultat

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

Opazi, kako polje postane seznam elementov s pomišljaji pod "roles", logična vrednost pa ostane neobdana kot true namesto niza "true".

Praktični nasveti

  • Pisanje manifesta Kubernetes ali poteka dela GitHub Actions: najprej osnutek strukture napiši kot JSON (mnogi urejevalniki in orodja AI zanesljiveje ustvarjajo JSON), nato pretvori v YAML za končno datoteko.
  • Razhroščevanje YAML konfiguracije, ki se obnaša narobe: pretvori jo v JSON, da natančno vidiš, katere vrednosti so nizi, števila ali logične vrednosti — prilagodljiva sintaksa YAML lahko skrije neujemanja tipov, ki so v JSON-u očitna.
  • Če tvoj JSON vsebuje ključe s posebnimi znaki ali ki se začnejo s številko, jih bo js-yaml samodejno obdal z narekovaji v izhodu YAML, tako da se pri ponovnem razčlenjevanju pravilno preberejo.

Zakaj je pretvarjanje tipov najtežji del YAML-a

Največja prednost YAML-a pred JSON-om v smislu uporabnosti — da narekovaji pri večini vrednosti niso potrebni — je hkrati tudi njegov največji vir subtilnih napak. Klasičen primer je "norveški problem": v YAML 1.1 (ki ga uporabljajo mnogi starejši razčlenjevalniki) je neobdana vrednost `no` razložena kot logična vrednost `false`, ne kot niz "no", kar je v resničnem svetu pokvarilo konfiguracije z državnimi kodami, ki naštevajo Norveško. To orodje sledi specifikaciji YAML 1.2, ki je nabor neobdanih vrednosti, obravnavanih kot logične, zožila samo na `true` in `false` (ter njihove različice velikih/malih črk), kar zmanjšuje — čeprav ne odpravlja povsem — ta razred presenečenj. Kadar dvomiš, kako bo vrednost tipizirana, je izrecno navajanje z narekovaji v tvojem YAML-u najvarnejša izbira.

Pogosta vprašanja

Ali so YAML komentarji ohranjeni pri pretvorbi v JSON in nazaj?

Ne. JSON nima koncepta komentarjev, zato pretvorba YAML-a v JSON zavrže vse komentarje # v izvoru. Če ta JSON pretvoriš nazaj v YAML, se komentarji ne bodo znova pojavili — to je inherentna omejitev formata, ne napaka orodja.

Kako orodje obravnava YAML sidra in vzdevke (& in *)?

Osnovni razčlenjevalnik (js-yaml) razreši sidra in vzdevke pred ustvarjanjem JSON-a, tako da se datoteka YAML, ki uporablja sidra & in vzdevke * za ponovno uporabo bloka podatkov, pretvori v JSON s temi podatki v celoti razširjenimi na vsakem mestu, kjer so referencirani.

Zakaj je moje YAML število v JSON-u prišlo kot niz, ali obratno?

Če je vrednost v izvoru YAML obdana z narekovaji (npr. version: "3.10"), je namerno obravnavana kot niz — to je pomembno, ker lahko neobdana YAML števila, kot je 3.10, ob razčlenjevanju v plavajočo vejico izgubijo zaključno ničlo. Vrednost v izvornem YAML-u obdaj z narekovaji, če jo posebej potrebuješ kot besedilo.

Ali lahko pretvorim datoteko YAML z več dokumenti (ločenimi z ---)?

To orodje pretvori en dokument YAML naenkrat. Če ima tvoja datoteka več dokumentov, ločenih z oznakami ---, pretvori en odsek naenkrat, ali pa najprej odstrani ločila in jih združi v en dokument, če to ustreza tvojemu primeru uporabe.

Ali se moji podatki kamor koli naložijo?

Ne. Pretvorba teče v celoti v tvojem brskalniku prek knjižnice js-yaml — nič se ne pošlje na strežnik, kar to naredi varno za uporabo s pravimi konfiguracijskimi datotekami, vključno s tistimi z internimi imeni gostiteljev ali podrobnostmi infrastrukture.

Sorodna orodja