UltKit

Převodník JSON do YAML

Přepište JSON do YAML, který lidé snadno přečtou, zkontrolují a okomentují. Nahrajte soubory .json a získáte odsazené soubory .yaml se stejnými klíči, hodnotami i pořadím, připravené k vložení do repozitáře.

Převodník dat

nebo sem přetáhněte soubory CSV, TSV, TXT … ·

Max. 95 MB na soubor· Až 20 souborů· Smazáno po 30 minutách

Výstup

Soubory se zpracovávají na našich serverech a po 30 minutách se smažou.

Jak nástroj používat

  1. 1

    Přidejte soubory JSON

    Nahrajte odpovědi API, exportovaná nastavení nebo vygenerované manifesty jako .json, až 20 souborů, každý do 95 MB. Každý soubor musí obsahovat jednu platnou hodnotu JSON.

  2. 2

    Ponechte výchozí nastavení

    YAML je už vybrané v poli Převést na. U konfiguračního souboru není třeba nic dalšího měnit; výstup používá odsazení dvěma mezerami.

  3. 3

    Převeďte a uložte do repozitáře

    Stiskněte Převést na YAML, stáhněte soubory .yaml, přidejte komentáře tam, kde je bude další čtenář potřebovat, a proveďte commit.

Odpověď

Jak převést JSON do YAML?

Nahrajte soubor .json a stiskněte Převést na YAML. Objekty se stanou odsazenými bloky klíč: hodnota, pole seznamy s pomlčkami a řetězce, které by YAML mohlo špatně přečíst, si ponechají uvozovky.

Proč převádět JSON do YAML u konfiguračních souborů

Většinu JSON vytváří software: odpověď API, export nastavení, výstup generátoru. Většinu YAML udržují lidé. Převod obvykle označuje chvíli, kdy data přestanou být strojovým výstupem a stanou se něčím, co tým vlastní, například manifestem nasazení v Gitu, CI pipeline nebo sadou proměnných pro Ansible.

Typický případ: zavoláte API cloudu, dostanete zpět 200řádkový popis zdroje v JSON a chcete ho uchovat jako infrastrukturu v kódu. Převod vám dá soubor bez složených závorek a čárek, kde jednořádková změna vytvoří jednořádkový diff a zvláštní hodnoty můžete vysvětlit v komentářích. Totéž platí pro testovací fixtures a překladové soubory, které upravují nevývojáři. Pokud místo toho potřebujete plochou tabulku, pro tabulkový procesor nebo report, hodí se více JSON do CSV.

Nástroje, které mají konfiguraci v YAML

Kde převedený YAML obvykle skončí
OrganizacePožadavekZdroj
GitHub ActionsWorkflow jsou v .github/workflows jako soubory .yml nebo .yamlGitHub Docs
GitLab CI/CDPipeline je definována v .gitlab-ci.yml v kořeni repozitářeGitLab Docs
Docker ComposeSlužby jsou popsány v compose.yaml (dříve docker-compose.yml)Docker Docs
AnsiblePlaybooky a soubory proměnných se píší v YAMLAnsible Docs
KubernetesManifesty přijímají JSON nebo YAML; dokumentace a charty Helm používají YAMLKubernetes

Příklad převodu JSON do YAML se záludnými hodnotami

Výstup YAML pro {"name":"eshop-api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
name: eshop-api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"

Co vám YAML dává

  • Komentáře pomocí #
  • Kratší diffy při code review
  • Na většině řádků žádné složené závorky, čárky ani uvozovky
  • Víceřádkový text pomocí blokových skalárů |

Na co si dát pozor

  • Odsazení má význam, takže zbloudilá mezera změní strukturu
  • Tabulátory se pro odsazení nesmějí používat
  • Řetězce bez uvozovek mohou být přečteny jako čísla nebo booleany
  • Pomalejší a méně jednotné parsery než u JSON

Příklad ukazuje, proč nestačí obyčejné nahrazení závorek. Verze 1.10 je v JSON řetězec; zapsaná bez uvozovek by ji YAML přečetlo jako číslo 1.1. NO, kód ISO pro Norsko, by parsery YAML 1.1 jako PyYAML přečetly jako false. Obojí si ponechá uvozovky, zatímco skutečná čísla a booleany zůstanou bez nich.

Srovnání JSON a YAML

JSON

JavaScript Object Notation

JSON je odlehčený textový formát pro strukturovaná data, který na počátku 21. století zpopularizoval Douglas Crockford a který je standardizován jako RFC 8259 a ECMA-404. Pomocí jednoduché čitelné syntaxe popisuje objekty, pole, řetězce, čísla, booleovské hodnoty a null. Je výchozím formátem webových API, konfiguračních souborů a výměny dat mezi aplikacemi téměř v každém programovacím jazyce. Nemá vestavěné komentáře, data ani schémata a rozsáhlé vnořené soubory se bez prohlížeče špatně čtou.

Komprese
–
Průhlednost
–
Animace
–
Představeno
2001 · Douglas Crockford
Převodník JSON

YAML

YAML

YAML („YAML Ain't Markup Language“) je datový formát přívětivý pro člověka, poprvé vydaný v roce 2001. Místo závorek používá odsazení, podporuje komentáře a je nadmnožinou JSON. Hojně se používá pro konfiguraci v Docker Compose, Kubernetes, GitHub Actions a mnoha aplikacích. Spoléhání na bílé znaky způsobuje, že jej lze rozbít jedinou špatně umístěnou mezerou, a některé hodnoty, například „no“ nebo data, se mohou vyložit nečekaně.

Komprese
–
Průhlednost
–
Animace
–
Představeno
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Převodník YAML

JSON se převádí do YAML, když se z vygenerovaných dat nebo dat z API má stát konfigurační soubor, který lidé udržují, kontrolují v pull requestech a doplňují komentáři.

Otázky k převodu JSON do YAML

Je JSON už sám o sobě platný YAML?

Ve verzi YAML 1.2 ano: revize z roku 2009 vznikla tak, aby byl každý dokument JSON zároveň dokumentem YAML. JSON můžete vložit do souboru .yaml a většina nástrojů ho přijme. Převod se týká čitelnosti: blokový zápis bez složených závorek, uvozovek a čárek je to, co očekávají recenzenti i další správce.

Proč jsou některé hodnoty v YAML v uvozovkách?

Protože bez uvozovek by je YAML přečetlo jako jiný typ. Verze jako 1.10 by se změnila na číslo 1.1 a yes nebo off by se ve starších parserech mohly změnit na booleany. Řetězce, které vypadají jako čísla, data nebo booleany, potřebují uvozovky, aby zůstaly řetězci, a pečlivý převod je proto zachová.

Mohu po převodu přidat komentáře?

Ano, a je to častý důvod k převodu. Napište # a poznámku na konec řádku nebo na samostatný řádek. JSON neumožňoval vysvětlit, proč je hodnota nastavena; YAML ano, což usnadňuje kontroly i předávání práce.

Proč můj YAML hlásí chybu kvůli tabulátoru?

Specifikace YAML zakazuje tabulátory pro odsazení; platí jen mezery. Převodník zapisuje mezery, ale editor nastavený na vkládání tabulátorů může soubor při další úpravě rozbít. Nastavte si v editoru pro soubory .yaml mezery.

Přijme Kubernetes převedený manifest?

kubectl čte JSON i YAML, takže data jsou v obou případech stejná; verze YAML je prostě to, co používá většina dokumentace, chartů Helm a code review. Pokud později potřebujete JSON zpět pro jq nebo volání API, YAML do JSON to obrátí.