← Všechny nástroje

Převodník JSON na YAML

Převádějte JSON na YAML a YAML na JSON okamžitě v prohlížeči. Jen lokálně a soukromě, s poznámkami ke komentářům, typům, odsazení a kotvám.

Převádějte JSON na YAML a YAML na JSON přímo v prohlížeči

JSON a YAML popisují stejný druh dat — vnořené mapy, seznamy, řetězce, čísla a booleovské hodnoty — ale vypadají velmi odlišně a používají se na různých místech. Pokud trávíte čas kolem API, kontejnerových souborů nebo CI pipeline, dřív nebo později budete potřebovat převést jedno na druhé. Tato stránka provádí konverzi oběma směry, zcela uvnitř vašeho prohlížeče, takže data, která vložíte, nikdy neopustí váš počítač.

Abstraktní svorky ze světla se proměňují do čistých odsazených vrstev konfigurace na tmavě indigovém pozadí
Struktura JSON se rozvíjí do YAML založeného na odsazení.

Co je JSON a kde se používá

JSON (JavaScript Object Notation) je přísný formát se závorkami a složenými závorkami, postavený primárně pro stroje. Každý objekt je obalený v {}, každé pole v [], klíče a řetězcové hodnoty jsou v uvozovkách a položky oddělují čárky. Je to výchozí formát pro přenos u REST a GraphQL API, tělo většiny webhooků, podoba NoSQL dokumentů a to, co vrací vaše volání fetch. Téměř každý jazyk ho umí parsovat rovnou po vybalení, což je přesně důvod, proč ovládl vrstvu API: JSON.parse v JavaScriptu, json ve standardní knihovně Pythonu a ekvivalenty všude jinde. Kompromisem je, že JSON je zdlouhavý na ruční psaní a zakazuje komentáře, takže je špatnou volbou pro soubory, které člověk celý den upravuje.

Co je YAML a kde se používá

YAML (YAML Ain't Markup Language) byl navržen s opačnou prioritou: člověk na prvním místě. Zbavuje se závorek a uvozovek, používá odsazení k vyjádření vnoření a umožňuje psát komentáře pomocí #. Tato čitelnost je důvod, proč se stal lingua franca konfigurace. Soubory Docker Compose, manifesty Kubernetes, workflow GitHub Actions a GitLab CI, playbooky Ansible a nespočet konfiguračních souborů aplikací jsou všechny v YAML. Typický dokument YAML je znatelně kratší než ekvivalentní JSON a mnohem snáze se porovnává v pull requestu. Cenou za tuto eleganci je křehkost, a tady začíná být konverze zajímavá.

Klíčové rozdíly, na kterých záleží

Tři rozdíly určují téměř každé rozhodnutí při konverzi. Zaprvé, bílé znaky mají v YAML význam a v JSON žádný. YAML používá mezery — nikdy tabulátory — k vyjádření struktury, takže jediná nesprávně zarovnaná mezera může potichu změnit význam dokumentu. JSON se o odsazení vůbec nestará. Zadruhé, YAML podporuje komentáře a JSON ne. Jakýkoli komentář s # v YAML jednoduše zmizí, když vytvoříte JSON, protože tam pro něj není místo. Zatřetí, YAML má bohatší, implicitní typování. Ochotně čte data, časová razítka a null v několika podobách a typy odhaduje z neuvozených hodnot. JSON má malou, explicitní sadu typů a žádnou nejednoznačnost. Všimněte si také, že JSON je technicky podmnožinou YAML 1.2, takže platný JSON se obvykle bez problémů parsuje i jako YAML, ale opak zaručený není.

Vnořený strom dat se převádí mezi dvěma zářícími strukturovanými formáty v azurové a zlaté barvě
Stejný strom dat vyjádřený ve dvou formátech.

Úskalí konverze, na která si dát pozor

Oběh tam a zpět není vždy bezztrátový a vyplatí se vědět, kde se láme:

  • Problém Norska. Podle pravidel YAML 1.1 se neuvozené NO parsuje jako booleovská hodnota false, a yes, on a off se stávají booleovskými hodnotami taky. Kód země nebo popisek přepínače se může nečekaně přehodit na true/false. Hodnoty, které míníte jako řetězce, uvozujte.
  • Zaokrouhlování čísel. Verze jako 3.10 může ztratit koncovou nulu a stát se 3.1, a 1.0 se stane číslem, i když jste chtěli text. Verze a ID uvozujte.
  • Kotvy a aliasy mizí. Odkazy YAML &kotva a *alias nemají v JSON žádný ekvivalent. Dobrý konvertor je rozbalí na plnou hodnotu, takže jsou data správná, ale deduplikace je pryč — JSON přes YAML zpátky na JSON neobnoví původní kotvy.
  • Komentáře a blokové skaláry. Komentáře se při převodu do JSON zahazují. Víceřádkové blokové skaláry (| a >) se sbalí do obyčejných řetězců JSON s únikovými sekvencemi \n, takže se ztrácí záměr vizuálního formátování.
  • Odsazení při návratu k YAML. JSON nekóduje odsazení, takže si konvertor zvolí konzistentní styl. Než ho vložíte do nástroje citlivého na tabulátory, zkontrolujte ho.

Proč záleží jen na lokálním zpracování

Konfigurační soubory a payloady API jsou přesně to, co by se nemělo nahrávat na náhodný server: často nesou názvy hostitelů, tokeny, interní názvy služeb nebo data zákazníků. Tento konvertor provádí krok parsování a generování ve vašem prohlížeči pomocí JavaScriptu. Nic se neposílá na backend, nic se nezaznamenává a nástroj funguje offline, jakmile se stránka jednou načte. Vložte tajemství Kubernetes nebo workflow CI s jistotou, že to zůstane na vašem počítači.

Potřebujete příbuzné nástroje? Prohlédněte si celou nabídku konvertorů dat, vyčistěte neuspořádaný vstup pomocí formátovače JSON a vraťte se sem kdykoli, když potřebujete přejít mezi světem API a světem konfigurace.

Často kladené otázky

Nahrávají se má data někam?

Ne. Konverze probíhá zcela ve vašem prohlížeči pomocí lokálního JavaScriptu. Váš JSON nebo YAML se nikdy neposílá na server, takže tajemství a konfigurační soubory zůstávají soukromé.

Proč se mi hodnota true nebo false v YAML nečekaně změnila?

YAML 1.1 zachází s neuvozenými slovy jako yes, no, on a off jako s booleovskými hodnotami — problém Norska. Obalte do uvozovek jakoukoli hodnotu, kterou míníte jako řetězec, aby konverzi přežila jako text.

Co se stane s mými komentáři při převodu YAML na JSON?

JSON nemá žádnou syntaxi pro komentáře, takže se při konverzi odstraní všechny komentáře za mřížkou. Pokud potřebujete poznámky zachovat, uchovejte si autoritativní kopii v YAML.

Zachovávají se kotvy a aliasy YAML?

Rozbalí se na plnou hodnotu, protože JSON nemá žádný referenční mechanismus. Data zůstanou správná, ale deduplikace se při zpětném převodu na YAML neobnoví.

Můžu převést JSON na YAML stejně jako YAML na JSON?

Ano, nástroj funguje oběma směry. Vložte JSON a získáte YAML, nebo vložte YAML a získáte JSON, a konvertor rozpozná a vygeneruje ten druhý formát.

Proč se YAML rozbije, když použiji tabulátory?

YAML vyžaduje pro odsazení mezery a tabulátory odmítá. Pokud se vložení nepodaří parsovat, nahraďte znaky tabulátoru mezerami a udržujte odsazení konzistentní.