§

Vložte JSON nebo YAML, který chcete převést.

Režim
Odsazení
Možnosti
§

Výstup

yaml

Skákání mezi JSON a YAML je denní práce pro platformní týmy v USA a Velké Británii. Kubernetes manifesty pro AWS EKS a GKE u bank z Fortune 500 jsou psány v YAML, ale konzumovány `kubectl` a Helm jako JSON interně, a CNCF projekty publikované přes Linux Foundation vydávají referenční YAML, které Argo CD ApplicationSets přetvářejí za běhu. GitHub Actions workflow YAML, OpenAPI 3 specifikace, AWS CloudFormation šablony a dbt `profiles.yml` soubory pro Snowflake se všechny ohýbají mezi těmito dvěma formáty během code review. UK fintech skupiny převádějí Open Banking JSON payloady proti YAML fixture, zatímco NHS Digital týmy převádějí Helm chart YAML do JSON pro validaci schématu proti Ajv pipeline před nasazením.

Co je převod JSON ↔ YAML?

JSON (JavaScript Object Notation, RFC 8259) je striktní textový formát se závorkami pro strukturovaná data; YAML (YAML Ain't Markup Language, verze 1.2) je nadmnožina JSON, která používá odsazení, zalomení řádků a lidsky čitelnou syntaxi pro stejný hodnotový model. Převod mezi nimi umožňuje přepínat stejnou konfiguraci mezi strojově přívětivou formou (JSON pro API, validaci schématu, programové transformace) a lidsky přívětivou formou (YAML pro code review, Kubernetes manifesty, GitHub Actions workflow) bez přepisování jediného klíče.

Jak funguje převod JSON ↔ YAML?

Každý převod probíhá lokálně ve vašem prohlížeči pomocí knihovny js-yaml (MIT, verze 4.1.0). Hlavní kroky jsou:

  1. Selektor režimu (Auto-detect / JSON → YAML / YAML → JSON) rozhoduje, který pipeline běží. V režimu Auto-detect první neprázdný znak vstupu určuje směr — { nebo [ znamená JSON; cokoli jiného znamená YAML.
  2. JSON → YAML: JSON.parse validuje vstup a vytvoří JavaScript hodnotu; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) zapíše YAML 1.2 formu. S vícedokumentovým režimem je vstupní pole vypsáno jako jeden element na dokument a spojeno oddělovači ---.
  3. YAML → JSON: jsyaml.loadAll parsuje každý dokument ve vstupu (zpracovává oddělovače --- automaticky) do pole; jedno-dokumentové vstupy jsou rozbaleny, takže JSON výstup je samotný dokument, ne jednoprvkové pole.
  4. Odsazení (2 nebo 4 mezery) a Hezky vytisknout jsou konfigurovatelné. Vypnutím Hezky vytisknout vzniká minifikovaný JSON pomocí JSON.stringify(value) bez bílých znaků.
  5. Výstup je zapsán do textového pole pouze pro čtení. Při selhání parsování YAML chybová zpráva zahrnuje 1-indexovaný řádek a sloupec hlášený js-yaml's e.mark, takže můžete skočit přímo k chybě.

Proč převádět JSON a YAML s tímto nástrojem?

  • Soukromí: každé parsování, transformace a emise probíhá ve vašem prohlížeči. Data — včetně Kubernetes tajemství, podepsaných JWT a proprietárních konfigurací — se nikdy nedostanou na naše servery.
  • Vícedokumentový YAML: jsyaml.loadAll rozpoznává oddělovače --- a vrací pole dokumentů, které převodník rozbaluje pro jedno-dokumentové případy nebo zachovává jako JSON pole pro vícedokumentové případy.
  • Kotvy a aliasy vyřešeny: YAML mechanismus &anchor / *alias je zpracován výchozím schématem js-yaml. Hodnota definovaná jednou a referencovaná dvakrát se převede do JSON objektu, kde všechny reference drží stejné hodnoty.
  • Žádné CDN, žádná telemetrie: knihovna js-yaml.min.js je dodávána ze stejné domény jako stránka, takže nástroj funguje offline, za firemními proxy a uvnitř air-gapped prostředí.

Jaká jsou běžná použití převodu JSON ↔ YAML?

Přepínání mezi JSON a YAML se objevuje napříč DevOps, platformním inženýrstvím a API nástroji:

  • Kubernetes manifesty: převod YAML Deployment, ConfigMap nebo HelmRelease na JSON, aby jej interní policy validátor (Joi, Ajv, OPA Rego) mohl lintovat programově, pak zpět na YAML pro cluster apply.
  • CI/CD workflow: převod GitHub Actions workflow.yml přes JSON, aby code-generátor mohl přepsat matrix nebo závislosti úloh, pak emise vyčištěného YAML pro PR.
  • OpenAPI spec: vložení JSON openapi.json z auto-generované dokumentace backendu a převod na openapi.yaml pro lidsky upravovanou referenci zkontrolovanou do repozitáře.

Jak vypadá příklad převodu JSON ↔ YAML?

Vložení {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} a stisknutí PŘEVÉST v režimu JSON → YAML vytvoří osm řádků odsazeného YAML s apiVersion: apps/v1 na prvním řádku. Vložení toho YAML zpět v režimu YAML → JSON s Hezky vytisknout zapnutým vrátí původní objekt bajt po bajtu po stabilním JSON.stringify(value, null, 2), s pořadím klíčů zachovaným, protože výchozí schéma js-yaml ctí pořadí vkládání v obou směrech.

Běží tento převodník JSON ↔ YAML zcela v mém prohlížeči?

Ano. Každé parsování, transformace a emise probíhá lokálně jako JavaScript uvnitř vaší záložky. Knihovna js-yaml je dodávána ze stejné domény jako stránka — žádné CDN, žádné fetch, žádné XMLHttpRequest, žádné navigator.sendBeacon na vstupu. Nástroj také funguje offline po načtení stránky, protože je to statický HTML/CSS/JS balíček s vendor knihovnou zkopírovanou vedle. Kubernetes tajemství, JWT payloady, podepsané CloudFormation YAML a proprietární konfigurace zůstávají na vašem zařízení.

Jak převodník zpracovává vícedokumentový YAML?

YAML podporuje více dokumentů v jednom streamu oddělených řádky obsahujícími pouze ---. Při YAML → JSON převodník volá jsyaml.loadAll, který vrací každý dokument jako JavaScript hodnotu. Pokud je nalezen přesně jeden dokument, JSON výstup je tento dokument přímo; pokud jsou nalezeny dva nebo více, JSON výstup je pole. Při JSON → YAML, když je vstup JSON pole A přepínač Více dokumentů je zapnut, každý element pole je emitován jako vlastní dokument s oddělovači --- mezi nimi — užitečné pro generování balíčku přívětivého pro kubectl apply z JSON pole zdrojů.

Jsou YAML kotvy a aliasy podporovány?

Ano — definice &anchor a reference *alias jsou vyřešeny výchozím schématem js-yaml během kroku načítání. YAML vstup jako defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d se parsuje na JSON objekt, kde job_a a job_b oba obsahují retries: 3, timeout: 30. Merge key << (YAML 1.1 rozšíření, které js-yaml stále ctí) je také podporováno na výchozím schématu.

Jsou YAML komentáře zachovány při převodu na JSON a zpět?

Ne — js-yaml odstraňuje komentáře během kroku parsování, takže převod YAML → JSON → YAML ztratí každý řádek s předponou #. Toto je známé omezení modelu load/dump; pokud je zachování komentářů kritické, použijte knihovnu vědomou si komentářů jako npm balíček yaml (který dodává CST + AST API navržené k zachování trivia) místo js-yaml. Pro většinu konfiguračních převodních workflow je kompromis přijatelný: převedený YAML si zachovává každý klíč, hodnotu, kotvu a alias, jen bez lidsky psaných komentářů.

Co se stane s vlastními YAML tagy?

Převodník používá DEFAULT_SCHEMA knihovny js-yaml, který rozumí !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary a !!timestamp — všechny tagy v YAML 1.2 core a JSON schématech. Vlastní nebo aplikačně specifické tagy (např. !Ref v CloudFormation, !vault v Ansible) nejsou rozpoznány a zobrazí se jasná chyba s uvedením nepodporovaného tagu. Pro CloudFormation konkrétně použijte flow aws cloudformation package + --output-template-file k rozšíření vlastních tagů před vložením do tohoto převodníku.

Tento JSON ↔ YAML převodník se dodává s js-yaml@4.1.0 zabaleným na stejné doméně, podporuje vícedokumentové streamy a kotvy/aliasy ihned po vybalení a hlásí chyby parsování YAML s řádkem a sloupcem, abyste mohli opravit zdroj. Žádné nahrávání, žádné CDN, žádná telemetrie — každý bajt zůstává ve vašem prohlížeči.