CodeKitHub
JSON eszközök

JSON ↔ YAML konverter

Utolsó frissítés:

JSON-ból YAML-lá alakításkor az objektumokból behúzott key: value blokkok lesznek, a tömbökből pedig `-` jellel kezdődő listaelemek — a fordított irányú konverzió pedig feloldja a YAML típus-rövidítéseit (idézőjel nélküli true, null vagy számok), és visszaalakítja őket megfelelő JSON típusokká. Ez az eszköz mindkét irányban elvégzi ezt a konverziót, teljes egészében a böngésződben.

Mi ez az eszköz?

A YAML a legtöbb modern konfigurációs fájl kedvelt formátuma — Kubernetes manifesztek, Docker Compose, GitHub Actions és GitLab CI pipeline-ok, Ansible playbookok —, mert olvashatóbb, mint a JSON, ha kézzel szerkeszted a fájlt: a legtöbb kulcs köré nem kell idézőjel, nincsenek záró vesszők, amiket el lehet rontani, és támogatja a megjegyzéseket is. A JSON viszont az, amit a legtöbb API és programozási nyelv natívan termel és fogyaszt.

Ez az eszköz a kettő közötti hidat képezi a js-yaml segítségével, amely a YAML specifikáció széles körben használt JavaScript implementációja — így az elemzés és a generálás ugyanazokat a szabályokat követi, mint amilyeneket egy YAML-tudatos eszköz, például a `kubectl` vagy egy CI futtató alkalmazna.

A JSON-ból YAML-lá konverzió az objektumokat behúzott key: value blokkokká, a tömböket pedig `-` jellel kezdődő listaelemekké alakítja. A YAML-ből JSON-ná konverzió ennek fordítottja, és emellett feloldja a YAML-specifikus típus-rövidítéseket (mint az idézőjel nélküli `true`, `null`, vagy számok) a megfelelő JSON típusokká.

Miért érdemes használni?

  • Kétirányú — JSON-t YAML-lá vagy YAML-t JSON-ná alakíthatsz ugyanazon a képernyőn.
  • Szabványokon alapuló elemzés és generálás a js-yaml segítségével, így a kimenet megegyezik azzal, amit a valódi YAML eszközök (Kubernetes, CI rendszerek, Ansible) elvárnak.
  • Bármilyen mélységű beágyazott objektumokat és tömböket kezel, konvertálva a YAML behúzás-alapú szerkezete és a JSON kapcsos zárójelei és szögletes zárójelei között.
  • Helyesen értelmezi a YAML típus-rövidítéseit — az idézőjel nélküli true/false, null, és numerikus értékek megfelelő JSON típusokká válnak sztringek helyett.
  • Vágólapra másolás vagy letöltés .json vagy .yaml fájlként.
  • 100%-ban kliensoldali — semmi, amit beillesztesz, nem kerül feltöltésre sehova.

Használati útmutató

  1. Válassz irányt: „JSON → YAML” vagy „YAML → JSON”.
  2. Illeszd be az adataidat a beviteli mezőbe.
  3. Kattints a „Konvertálás” gombra.
  4. Nézd át az eredményt, majd másold ki, vagy kattints a „Letöltés” gombra a fájl mentéséhez.

Példa

Bemenet

{"name":"Alice","roles":["admin","editor"],"active":true}

Kimenet

name: Alice
roles:
  - admin
  - editor
active: true

Figyeld meg, hogy a tömbből kötőjeles listaelemek lettek a „roles” alatt, a logikai érték pedig idézőjel nélküli true marad, nem pedig „true” sztring.

Gyakorlati tippek

  • Kubernetes manifeszt vagy GitHub Actions workflow írásakor: vázold fel a szerkezetet JSON-ként (sok szerkesztő és AI eszköz megbízhatóbban generál JSON-t), majd alakítsd YAML-lá a végleges fájlhoz.
  • Hibás YAML konfiguráció hibakeresésekor: alakítsd JSON-ná, hogy pontosan lásd, mely értékek sztringek, számok vagy logikai értékek — a YAML rugalmas szintaxisa elrejtheti a típusütközéseket, amelyek JSON-ban nyilvánvalóak.
  • Ha a JSON-od speciális karaktereket tartalmazó, vagy számmal kezdődő kulcsokat tartalmaz, a js-yaml automatikusan idézőjelbe teszi őket a YAML kimenetben, hogy helyesen olvashatók legyenek vissza.

Miért a típuskényszerítés a YAML legmakacsabb része

A YAML legnagyobb használhatósági előnye a JSON-hoz képest — hogy a legtöbb érték köré nem kell idézőjel — egyben a rejtett hibák legnagyobb forrása is. A klasszikus példa a „Norvégia-probléma”: a YAML 1.1-ben (amit sok régebbi elemző használ) az idézőjel nélküli `no` érték a `false` logikai értékként értelmeződik, nem pedig a „no” sztringként, ami valós, Norvégiát listázó országkód-konfigurációkat tört el a gyakorlatban. Ez az eszköz a YAML 1.2 specifikációt követi, amely leszűkítette az idézőjel nélkül logikai értékként kezelt értékek körét kizárólag a `true` és `false` értékekre (és azok kis- és nagybetűs változataira), ezzel csökkentve — bár nem megszüntetve — ezt a fajta meglepetést. Ha bizonytalan vagy abban, hogy egy érték hogyan lesz típusba sorolva, a legbiztosabb megoldás, ha explicit módon idézőjelbe teszed a YAML-odban.

Gyakori kérdések

Megmaradnak a YAML megjegyzések JSON-ná alakításkor és vissza?

Nem. A JSON nem ismeri a megjegyzés fogalmát, így a YAML-ből JSON-ná konverzió eldob minden # megjegyzést a forrásból. Ha ezt a JSON-t visszaalakítod YAML-lá, a megjegyzések nem jelennek meg újra — ez a formátum belső korlátja, nem az eszköz hibája.

Hogyan kezeli az eszköz a YAML horgonyokat és aliasokat (& és *)?

A háttérben futó elemző (js-yaml) feloldja a horgonyokat és aliasokat, mielőtt JSON-t készít, így egy YAML fájl, amely & horgonyokat és * aliasokat használ egy adatblokk újrafelhasználásához, olyan JSON-ná alakul, amelyben az adat teljes egészében ki van fejtve minden helyen, ahol hivatkoznak rá.

Miért lett a YAML számomból sztring JSON-ban, vagy fordítva?

Ha egy érték idézőjelek között szerepel a YAML forrásban (pl. version: "3.10"), az szándékosan sztringként kezelendő — ennek azért van jelentősége, mert az idézőjel nélküli YAML számok, mint a 3.10, elveszíthetik a záró nullát, ha lebegőpontos számként értelmezik őket. Idézőjelezd az értéket a forrás YAML-ban, ha kifejezetten szövegként szeretnéd kezelni.

Átalakíthatok több dokumentumot tartalmazó YAML fájlt (--- jellel elválasztva)?

Ez az eszköz egyszerre egy YAML dokumentumot alakít át. Ha a fájlodban több dokumentum van --- jelölőkkel elválasztva, alakítsd át egyenként a részeket, vagy távolítsd el az elválasztókat, és egyesítsd őket egy dokumentumba előtte, ha ez megfelel a céljaidnak.

Feltöltésre kerül valahova az adatom?

Nem. A konverzió teljes egészében a böngésződben zajlik a js-yaml könyvtár segítségével — semmi nem kerül elküldésre egy szerverre, ami biztonságossá teszi a valódi konfigurációs fájlokkal való használatot is, beleértve azokat, amelyek belső hosztneveket vagy infrastruktúra-részleteket tartalmaznak.

Kapcsolódó eszközök