Utilia

Převodník JSON na YAML

Převáděj JSON na YAML a YAML na JSON ve svém prohlížeči, s podporou kotev, slučovacích klíčů a souborů s více dokumenty. Nic se nenahrává.

Převod

Jak používat převodník JSON na YAML

  1. Zvol směr: JSON → YAML nebo YAML → JSON.
  2. Vlož data, nebo klikni na Otevřít soubor a načti soubor .json, .yaml či .yml (do 10 MB).
  3. Vyber Odsazení (2 nebo 4 mezery) a případně Seřadit klíče podle abecedy.
  4. Klikni na Převést, nebo prostě piš dál: výsledek se aktualizuje automaticky. Pokud je vstup neplatný, chybové hlášení uvádí řádek a sloupec problému.
  5. Výsledek zkopíruj nebo stáhni. Obrátit směr pošle výstup zpět do vstupu, abys ho mohl převést opačným směrem.

JSON a YAML: stejná data, jiná syntaxe

YAML je v praxi nadmnožinou JSON: každý dokument JSON popisuje data, která YAML umí vyjádřit, a YAML k tomu přidává lehčí syntaxi, kterou lidé snáz čtou a upravují. Proto se manifesty Kubernetes, soubory Docker Compose, pipeline GitHub Actions a GitLab CI, playbooky Ansible a specifikace OpenAPI obvykle píší v YAML, zatímco API a programy si vyměňují JSON.

Stejná data v obou formátech:

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

JSON → YAML

Převodník zapisuje YAML v blokovém stylu: jeden klíč na řádek, seznamy s pomlčkami a vnořené objekty odsazené. Dlouhé řetězce se nikdy nezalamují a víceřádkové řetězce používají doslovný styl |, aby se konce řádků zachovaly přesně. Řetězce, které by YAML jinak četl jako jiný typ, se uvozují: "yes", "1.0" nebo "null" zůstanou po cestě tam a zpět řetězci. Seřadit klíče seřadí klíče každého objektu podle abecedy, což usnadňuje porovnání dvou konfiguračních souborů.

YAML → JSON

YAML se čte podle základního schématu YAML 1.2, tedy podle stejných pravidel jako většina moderních nástrojů:

  • true/false, čísla a null (nebo ~) se změní na hodnoty JSON. yes, no, on a off zůstanou řetězci, jak vyžaduje specifikace YAML 1.2.
  • Kotvy a aliasy (&base, *base) se rozbalí a slučovací klíče (<<: *base), časté v souborech CI, jsou podporovány.
  • Soubor s několika dokumenty oddělenými --- se změní na pole JSON s jedním prvkem na dokument a zpráva ti řekne, kolik jich bylo sloučeno.
  • Komentáře se zahazují, protože JSON komentáře nemá.
  • .inf a .nan nemají v JSON ekvivalent a zapisují se jako řetězce "Infinity" a "NaN".

Aby byl tvůj prohlížeč chráněn před soubory typu „billion laughs“, v nichž se několik aliasů rozbalí na miliardy hodnot, dokument, který se rozbalí na víc než milion hodnot, se odmítne.

Časté chyby v YAML

  • Tabulátory pro odsazení: YAML povoluje jen mezery.
  • Nejednotné odsazení: položky téhož seznamu nebo objektu musí začínat ve stejném sloupci.
  • Chybějící mezera za dvojtečkou: key:value je jediný řetězec, zatímco key: value je dvojice klíč–hodnota.
  • Speciální znaky bez uvozovek: hodnota, která začíná znakem @, zpětným apostrofem, *, & nebo !, nebo která obsahuje : či #, musí být uvozena.

Časté dotazy

Odesílá se můj soubor na server?

Ne. Převod probíhá ve tvém prohlížeči a tvoje konfigurační soubory, tajné klíče ani data API nikdy neopustí tvůj počítač.

Proč se „yes“ a „no“ nepřevádějí na logické hodnoty?

Od YAML 1.2 jsou logickými hodnotami jen true a false. Starší parsery YAML 1.1 považovaly yes, no, on a off za logické hodnoty, což způsobilo slavný „norský problém“ (kód země NO se četl jako false). Tento nástroj se řídí YAML 1.2.

Zachovávají se komentáře YAML?

Ne. JSON komentáře nemá, takže se při převodu YAML → JSON ztratí. Při převodu JSON → YAML můžeš komentáře do výsledku doplnit dodatečně.

Mohu převést soubor Kubernetes s několika prostředky?

Ano. Každý prostředek oddělený --- se stane jedním prvkem pole JSON. Převod tohoto pole zpět na YAML dá jediný dokument obsahující seznam.

Mění převodník pořadí klíčů?

Ne, pokud nezaškrtneš Seřadit klíče: klíče si zachovávají pořadí, v jakém jsou ve tvém vstupu. Jedinou výjimku způsobuje samotný JavaScript: klíče, které jsou celá čísla, například "10" nebo "2", se řadí na začátek ve vzestupném pořadí.