§

Illessze be a konvertálni kívánt JSON-t vagy YAML-t.

Mód
Behúzás
Opciók
§

Kimenet

yaml

A JSON és YAML közötti váltás mindennapi munka az USA-ban és az Egyesült Királyságban dolgozó platform csapatok számára. A Fortune 500 bankok AWS EKS és GKE Kubernetes manifestjei YAML-ben készülnek, de a kubectl és a Helm belsőleg JSON-ként fogyasztja őket, és a Linux Foundationön keresztül kiadott CNCF projektek referencia YAML-eket tesznek közzé, amelyeket az Argo CD ApplicationSet-ek menet közben alakítanak át. A GitHub Actions munkafolyamat YAML-ek, OpenAPI 3 specifikációk, AWS CloudFormation sablonok és dbt profiles.yml fájlok Snowflake-hez mind a két formátum között ingáznak a kódellenőrzés során. Az Egyesült Királyságbeli fintech csoportok az Open Banking JSON adattartalmakat YAML tesztek ellenében köröztetik, míg az NHS Digital csapatok a Helm chart YAML-eket JSON-ba konvertálják séma érvényesítéshez egy Ajv pipeline-nal a telepítés előtt.

Mi az a JSON ↔ YAML konverzió?

A JSON (JavaScript Object Notation, RFC 8259) egy szigorú, kapcsos zárójeles szöveges formátum strukturált adatokhoz; a YAML (YAML Ain't Markup Language, 1.2 verzió) a JSON egy szuperhalmaza, amely behúzást, sortöréseket és emberi olvasásra alkalmas szintaxist használ ugyanahhoz az értékmodellhez. A köztük való konvertálás lehetővé teszi ugyanazon konfiguráció átfordítását a gépbarát forma (JSON API-khoz, séma érvényesítéshez, programozott átalakításokhoz) és az emberbarát forma (YAML kódellenőrzéshez, Kubernetes manifestekhez, GitHub Actions munkafolyamatokhoz) között anélkül, hogy egyetlen kulcsot is újra kellene gépelni.

Hogyan működik a JSON ↔ YAML konverzió?

Minden konverzió helyben fut a böngészőjében a beépített js-yaml könyvtár használatával (MIT, 4.1.0 verzió). A magas szintű lépések:

  1. A módválasztó (Automatikus felismerés / JSON → YAML / YAML → JSON) dönti el, melyik folyamat fut. Automatikus felismerés módban a bemenet első nem szóköz karaktere határozza meg az irányt — { vagy [ JSON-t jelent; bármi más YAML-t.
  2. JSON → YAML: a JSON.parse érvényesíti a bemenetet és egy JavaScript értéket hoz létre; a jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) kiírja a YAML 1.2 formát. Bekapcsolt Több dokumentum opcióval egy bemeneti tömb elemenként egy dokumentumba kerül kiírásra, és --- elválasztókkal van összefűzve.
  3. YAML → JSON: a jsyaml.loadAll elemzi a bemenet minden dokumentumát (automatikusan kezelve a --- elválasztókat) egy tömbben; az egy-dokumentumos bemenetek kicsomagolásra kerülnek, így a JSON kimenet maga a dokumentum, nem egy egyelemű tömb.
  4. A behúzás (2 vagy 4 szóköz) és a Szép nyomtatás konfigurálható. A Szép nyomtatás kikapcsolva tömörített JSON-t bocsát ki a JSON.stringify(value) segítségével szóközök nélkül.
  5. A kimenet az írásvédett szövegmezőbe kerül. YAML elemzési hibák esetén a hibaüzenet tartalmazza a js-yaml e.mark által jelentett 1-alapú sort és oszlopot, így közvetlenül a hibához ugorhat.

Miért konvertáljon JSON-t és YAML-t ezzel az eszközzel?

  • Adatvédelem: minden elemzés, átalakítás és kibocsátás a böngészőjében történik. Az adatok — beleértve a Kubernetes titkokat, aláírt JWT-ket és védett konfigurációkat — soha nem érik el a szervereinket.
  • Több dokumentumos YAML: a jsyaml.loadAll felismeri a --- elválasztókat, és dokumentumok tömbjét adja vissza, amelyet a konverter kicsomagol egy-dokumentumos esetekben, vagy JSON tömbként őriz meg több-dokumentumos esetekben.
  • Horgonyok és álnevek feloldva: a YAML &anchor / *alias mechanizmusát a js-yaml alapértelmezett sémája kezeli. Egy egyszer definiált és kétszer hivatkozott érték olyan JSON objektumba jár körbe, ahol minden hivatkozás egyenlő értékeket tartalmaz.
  • Nincs CDN, nincs telemetria: a js-yaml.min.js könyvtár ugyanarról az eredetről származik, mint az oldal, így az eszköz offline, vállalati proxyk mögött és légmentes környezetekben is működik.

Mik a JSON ↔ YAML konverzió gyakori alkalmazásai?

A JSON és YAML közötti váltás a DevOps, a platform mérnöki munka és az API eszköztár során merül fel:

  • Kubernetes manifestek: egy YAML Deployment, ConfigMap vagy HelmRelease JSON-ba konvertálása, hogy egy házi készítésű házirend-érvényesítő (Joi, Ajv, OPA Rego) programozottan ellenőrizhesse, majd vissza YAML-ba a fürt alkalmazáshoz.
  • CI/CD munkafolyamatok: egy GitHub Actions workflow.yml köröztetése JSON-on keresztül, hogy egy kódgenerátor átírja a mátrixot vagy a feladat függőségeket, majd a megtisztított YAML kibocsátása a PR-hez.
  • OpenAPI specifikációk: egy JSON openapi.json beillesztése a backend automatikusan generált dokumentációjából és konvertálása openapi.yaml-lá az ember által szerkesztett referenciához, amely a repóba van bejelölve.

Hogyan néz ki egy JSON ↔ YAML körút példa?

Illessze be a {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}}-et, és nyomja meg a KONVERTÁLÁS gombot JSON → YAML módban. Az eredmény nyolc sor behúzott YAML, a apiVersion: apps/v1-gyel az első sorban. Ha ezt a YAML-t visszaadja YAML → JSON módban bekapcsolt Szép nyomtatással, az eredeti objektumot kapja vissza bájtról bájtra egy stabil JSON.stringify(value, null, 2) után, a kulcssorrend megőrzésével, mert a js-yaml alapértelmezett sémája mindkét irányban tiszteletben tartja a beszúrási sorrendet.

Ez a JSON ↔ YAML konverter teljes egészében a böngészőmben fut?

Igen. Minden elemzési, átalakítási és kibocsátási lépés JavaScriptként fut a böngésző lapján belül. A beépített js-yaml könyvtár ugyanarról az eredetről származik, mint az oldal — nincs CDN, nincs fetch, nincs XMLHttpRequest, nincs navigator.sendBeacon a bemeneten. Az eszköz offline is működik, miután az oldal betöltődött, mert egy statikus HTML/CSS/JS csomag, a szállítói könyvtárral együtt. A Kubernetes titkok, JWT adattartalmak, aláírt CloudFormation YAML-ek és védett konfigurációk az Ön eszközén maradnak.

Hogyan kezeli a konverter a több dokumentumos YAML-t?

A YAML támogatja a több dokumentumot egy adatfolyamban, amelyeket csak ----t tartalmazó sorok választanak el. YAML → JSON irányban a konverter meghívja a jsyaml.loadAll-t, amely minden dokumentumot JavaScript értékként ad vissza. Ha pontosan egy dokumentum található, a JSON kimenet közvetlenül az a dokumentum; ha kettő vagy több található, a JSON kimenet egy tömb. JSON → YAML irányban, amikor a bemenet egy JSON tömb ÉS a Több dokumentum kapcsoló be van kapcsolva, minden tömb elem saját dokumentumként kerül kibocsátásra --- elválasztókkal közöttük — hasznos egy kubectl apply-barát csomag generálásához egy JSON erőforrás tömbből.

Támogatottak a YAML horgonyok és álnevek?

Igen — a &anchor definíciók és a *alias hivatkozások a js-yaml alapértelmezett sémája által feloldásra kerülnek a betöltési lépés során. Egy olyan YAML bemenet, mint a defaults: &d retries: 3 timeout: 30 job_a: <<: *d job_b: <<: *d egy olyan JSON objektumba elemződik, ahol a job_a és a job_b is tartalmazza a retries: 3, timeout: 30 értékeket. Az << összefésülés kulcs (egy YAML 1.1 kiterjesztés, amelyet a js-yaml továbbra is tiszteletben tart) szintén támogatott az alapértelmezett sémán.

Megmaradnak a YAML megjegyzések a JSON-ba konvertáláskor és vissza?

Nem — a js-yaml eltávolítja a megjegyzéseket az elemzési lépés során, így egy YAML → JSON → YAML körút elveszít minden #-előtaggal ellátott sort. Ez a betöltés/kiírás modell ismert korlátozása; ha a megjegyzések megőrzése kritikus, használjon megjegyzés-tudatos könyvtárat, mint a yaml npm csomag (amely egy CST + AST API-val rendelkezik, amelyet a trivia megőrzésére terveztek) a js-yaml helyett. A legtöbb konfiguráció-konverziós munkafolyamatnál a kompromisszum elfogadható: a körbejárt YAML megtart minden kulcsot, értéket, horgonyt és álnevet, csak az ember által írt megjegyzések nélkül.

Mi történik az egyéni YAML tag-ekkel?

A konverter a js-yaml DEFAULT_SCHEMA-ját használja, amely érti a !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary és !!timestamp tageket — a YAML 1.2 core és JSON sémák összes tag-jét. Az egyéni vagy alkalmazás-specifikus tagek (pl. !Ref a CloudFormation-ben, !vault az Ansible-ben) nem kerülnek felismerésre, és egyértelmű hibaként jelennek meg, hivatkozva a nem támogatott tag-re. Kifejezetten CloudFormation esetén használja az aws cloudformation package + --output-template-file folyamatot az egyéni tag-ek kibontásához, mielőtt beillesztené ebbe a konverterbe.

Ez a JSON ↔ YAML konverter a js-yaml@4.1.0-val érkezik, ugyanarról az eredetről csomagolva, támogatja a több dokumentumos adatfolyamokat és a horgonyokat/álneveket a dobozból, és a YAML elemzési hibákat sorral és oszloppal jelenti, hogy kijavíthassa a forrást. Nincs feltöltés, nincs CDN, nincs telemetria — minden bájt a böngészőjében marad.