Jak používat
- Zvolte směr: JSON → YAML nebo YAML → JSON.
- Vložte data nebo stiskněte „Vyzkoušet příklad“. Výsledek se aktualizuje při psaní.
- Vyberte odsazení výstupu: 2 nebo 4 mezery.
- 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.