tigtools

Převodník JSON ⇄ YAML

Přepněte směr, vložte data a okamžitě získejte převedený výsledek. Hodí se pro manifesty Kubernetes, CI pipeline a konfigurace aplikací.

Běží ve vašem prohlížeči Bez registrace

Směr
Odsazení

Jak používat

  1. Zvolte směr: JSON → YAML nebo YAML → JSON.
  2. Vložte data nebo stiskněte „Vyzkoušet příklad“. Výsledek se aktualizuje při psaní.
  3. Vyberte odsazení výstupu: 2 nebo 4 mezery.
  4. Zkopírujte nebo stáhněte výsledek. „Použít výstup jako vstup“ obrátí směr, takže můžete převést zpět.

Jak to funguje

Převod používá open-source knihovnu YAML (verze 2), která implementuje specifikaci YAML 1.2. YAML 1.2 je z praktického hlediska nadmnožinou JSON, takže jakýkoli dokument JSON se převede do YAML beze ztrát a YAML, který používá pouze mapy, seznamy, řetězce, čísla, logické hodnoty a null, se převede zpět na identický JSON.

Při zápisu YAML nástroj uvádí do uvozovek řetězce, které by čtenář mohl považovat za něco jiného. Starší parsery YAML 1.1, jako je PyYAML a mnoho nástrojů CI, čtou yes, no, on a off jako logické hodnoty, 0777 jako osmičkové číslo a 2024-01-31 jako datum, proto se zapisují jako "yes", "0777" a "2024-01-31". Dlouhé řetězce nejsou zalomeny na více řádků. Komentáře nelze přenést, protože JSON komentáře nemá.

Při čtení YAML jsou kotvy (&name) a aliasy (*name) rozbaleny, včetně slučovacího klíče <<, a soubor s více dokumenty oddělenými --- se stane polem JSON. Kvůli ochraně vašeho prohlížeče je rozbalování aliasů omezeno, což zastaví dokumenty typu „billion laughs“. Hodnoty YAML bez ekvivalentu v JSON se převedou co nejpřesněji: .inf a .nan se stanou null a časová razítka zůstanou řetězci. Chyby syntaxe jsou hlášeny s řádkem a sloupcem.

Příklady

Manifest Kubernetes

Deployment zapsaný skriptem jako JSON se převede do rozvržení YAML, které uživatelé kubectl očekávají, se seznamy pod klíčem containers zapsanými jako - name: web. Hodnoty jako "no" zůstávají v uvozovkách, aby zůstaly řetězci.

Konfigurace CI s kotvami

Soubor pipeline definuje výchozí hodnoty: &defaults a znovu je používá pomocí <<: *defaults. Převod do JSON přesně ukáže, jaké klíče jednotlivé úlohy po sloučení mají.

Specifikace OpenAPI

Soubor OpenAPI je udržován v YAML, ale generátor kódu potřebuje JSON. Vložte YAML, zvolte odsazení 2 mezerami a stáhněte soubor .json.

Časté dotazy

Proč je "yes" v mém YAML uvedeno v uvozovkách?

Podle pravidel YAML 1.1, která stále používají PyYAML, Ansible a mnoho dalších nástrojů, je neuvedené do uvozovek yes, no, on nebo off logická hodnota. Uvedení do uvozovek zajistí, že ve všech parserech zůstane řetězcem. Uvozovky nejsou součástí hodnoty.

Zachovají se komentáře YAML při převodu do JSON?

Ne. JSON nemá syntaxi pro komentáře, takže komentáře jsou zahozeny. Převod JSON zpět do YAML je neobnoví.

Co se stane s více YAML dokumenty oddělenými ---?

Převedou se na jedno pole JSON s jedním prvkem na každý dokument v daném pořadí. Jediný dokument se převede přímo na svou hodnotu.

A co vlastní tagy, jako je !Ref v CloudFormation?

Aplikačně specifické tagy nejsou rozpoznávány. Nástroj zobrazí varování a převede označenou hodnotu jako obyčejnou hodnotu, takže !Ref MyBucket se stane řetězcem "MyBucket" a samotný tag se ztratí.

Soukromí

Oba směry běží zcela ve vašem prohlížeči. Váš JSON nebo YAML se nenahrává, neukládá ani nezahrnuje do analýz.