Utilia

Pretvornik JSON v YAML

Pretvori JSON v YAML in YAML v JSON v brskalniku s podporo za sidra, ključe združevanja in večdokumentne datoteke. Nič se ne naloži na strežnik.

Pretvorba

Kako uporabljati pretvornik JSON v YAML

  1. Izberi smer: JSON → YAML ali YAML → JSON.
  2. Prilepi podatke ali klikni Odpri datoteko, da naložiš datoteko .json, .yaml ali .yml (do 10 MB).
  3. Izberi Zamik (2 ali 4 presledki) in po želji Razvrsti ključe po abecedi.
  4. Klikni Pretvori ali pa kar tipkaj naprej: rezultat se posodobi samodejno. Če je vnos neveljaven, sporočilo o napaki navede vrstico in stolpec težave.
  5. Kopiraj ali prenesi rezultat. Zamenjaj smer pošlje izhod nazaj v vnos, da ga pretvoriš v nasprotno smer.

JSON in YAML: isti podatki, drugačna sintaksa

YAML je v praksi nadmnožica JSON: vsak dokument JSON opisuje podatke, ki jih YAML zmore izraziti, YAML pa doda lažjo sintakso, ki jo ljudje laže berejo in urejajo. Zato so manifesti Kubernetes, datoteke Docker Compose, cevovodi GitHub Actions in GitLab CI, priročniki Ansible in specifikacije OpenAPI običajno napisani v YAML, medtem ko vmesniki API in programi izmenjujejo JSON.

Isti podatki v obeh formatih:

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

JSON → YAML

Pretvornik zapiše YAML v blokovnem slogu: en ključ na vrstico, seznami z vezaji in zamaknjeni gnezdeni objekti. Dolgi nizi se nikoli ne prelomijo, večvrstični nizi pa uporabljajo dobesedni slog |, tako da prelomi vrstic ostanejo natanko taki. Nizi, ki bi jih YAML sicer prebral kot drug tip, so v narekovajih: "yes", "1.0" ali "null" po krogu tja in nazaj ostanejo nizi. Razvrsti ključe uredi ključe vsakega objekta po abecedi, kar olajša primerjavo dveh konfiguracijskih datotek.

YAML → JSON

YAML se bere z jedrno shemo YAML 1.2, po istih pravilih kot jih uporablja večina sodobnih orodij:

  • true/false, števila in null (ali ~) postanejo vrednosti JSON; yes, no, on in off ostanejo nizi, kot zahteva specifikacija YAML 1.2.
  • Sidra in alijasi (&base, *base) se razširijo, ključi združevanja (<<: *base), pogosti v datotekah CI, pa so podprti.
  • Datoteka z več dokumenti, ločenimi z ---, postane tabela JSON z enim elementom na dokument, sporočilo pa pove, koliko jih je bilo združenih.
  • Komentarji se izpustijo, ker JSON komentarjev nima.
  • .inf in .nan nimata ustreznice v JSON; zapisana sta kot nizi "Infinity" in "NaN".

Da zaščiti tvoj brskalnik pred datotekami »billion laughs«, v katerih se nekaj alijasov razširi v milijarde vrednosti, orodje zavrne dokument, ki se razširi v več kot milijon vrednosti.

Pogoste napake v YAML

  • Tabulatorji za zamik: YAML dovoljuje samo presledke.
  • Nedosleden zamik: elementi istega seznama ali objekta se morajo začeti v istem stolpcu.
  • Manjkajoč presledek za dvopičjem: key:value je en sam niz, key: value pa par ključ-vrednost.
  • Posebni znaki brez narekovajev: vrednost, ki se začne z @, vzvratnim narekovajem, *, & ali ! ali vsebuje : ali #, mora biti v narekovajih.

Pogosta vprašanja

Ali se moja datoteka pošlje na strežnik?

Ne. Pretvorba poteka v tvojem brskalniku, tvoje konfiguracijske datoteke, skrivnosti ali podatki API pa nikoli ne zapustijo tvojega računalnika.

Zakaj »yes« in »no« nista pretvorjena v logični vrednosti?

Od YAML 1.2 sta logični vrednosti samo true in false. Starejši razčlenjevalniki YAML 1.1 so yes, no, on in off obravnavali kot logične vrednosti, kar je povzročilo znani »norveški problem« (koda države NO prebrana kot false). To orodje sledi YAML 1.2.

Ali se komentarji YAML ohranijo?

Ne. JSON komentarjev nima, zato se pri YAML → JSON izgubijo. Pri JSON → YAML lahko komentarje v rezultat dodaš naknadno.

Ali lahko pretvorim datoteko Kubernetes z več viri?

Da. Vsak vir, ločen z ---, postane en element tabele JSON. Pretvorba te tabele nazaj v YAML da en sam dokument s seznamom.

Ali pretvornik spremeni vrstni red ključev?

Ne, razen če označiš Razvrsti ključe: ključi ohranijo vrstni red iz tvojega vnosa. Edina izjema izhaja iz samega JavaScripta: ključi, ki so cela števila, kot sta "10" ali "2", so postavljeni na začetek, v naraščajočem vrstnem redu.