← Összes eszköz

JSON - YAML Konverter

Alakíts JSON-t YAML-lé és YAML-t JSON-ná azonnal a böngésződben. Csak helyben, privátan, megjegyzésekkel a kommentekről, típusokról, behúzásról és horgonyokról.

Alakítsd JSON-t YAML-lé és YAML-t JSON-né a böngésződben

A JSON és a YAML ugyanolyan típusú adatot ír le — beágyazott térképeket, listákat, karakterláncokat, számokat és logikai értékeket —, de nagyon másképp néznek ki, és eltérő helyeken használják őket. Ha bármennyi időt töltesz API-k, konténerfájlok vagy CI-folyamatok közelében, előbb-utóbb szükséged lesz az egyik átalakítására a másikba. Ez az oldal ezt a konverziót mindkét irányban elvégzi, teljes egészében a böngésződben, tehát a beillesztett adat soha nem hagyja el a gépedet.

Absztrakt, fénylő kapcsos zárójelek tiszta, behúzott konfigurációs rétegekké alakulnak sötét indigó háttéren
A JSON struktúra kibontakozik behúzás alapú YAML-lé.

Mi a JSON, és hol él

A JSON (JavaScript Object Notation) egy szigorú, zárójel- és kapcsoszárójel-alapú formátum, ami elsősorban a gépeknek készült. Minden objektum {}-be van csomagolva, minden tömb []-be, a kulcsok és karakterlánc-értékek dupla idézőjelesek, az elemeket vesszők választják el. Ez az alapértelmezett átviteli formátuma a REST és GraphQL API-knak, a legtöbb webhook törzsének, a NoSQL dokumentumok formájának, és annak, amit a fetch hívásod visszaad. Szinte minden nyelv gyárilag feldolgozza, ami pontosan az oka annak, hogy megnyerte az API-réteget: JSON.parse JavaScriptben, json a Python standard könyvtárában, és megfelelői mindenütt. A hátránya, hogy a JSON fárasztó kézzel írni, és tiltja a megjegyzéseket, tehát rossz formátum egy olyan fájlhoz, amit egy ember egész nap szerkeszt.

Mi a YAML, és hol él

A YAML (YAML Ain't Markup Language) az ellenkező prioritásra lett tervezve: az emberekre elsőként. Elhagyja a kapcsos zárójeleket és idézőjeleket, behúzást használ a beágyazottság kifejezésére, és lehetővé teszi a # jellel írt megjegyzéseket. Ez az olvashatóság az oka annak, hogy a konfigurációk lingua francájává vált. A Docker Compose fájlok, Kubernetes manifesztek, GitHub Actions és GitLab CI munkafolyamatok, Ansible playbookok, és számtalan app konfigurációs fájl mind YAML. Egy tipikus YAML dokumentum észrevehetően rövidebb, mint az egyenértékű JSON, és sokkal könnyebb diff-elni egy pull requestben. Ennek az eleganciának az ára a törékenység, és itt jön képbe a konverzió izgalma.

A kulcsfontosságú különbségek, amik számítanak

Három különbség irányítja szinte minden konverziós döntést. Először, a YAML-ban a szóköz jelentőséggel bír, a JSON-ban pedig nem számít. A YAML szóközöket használ — soha tabulátort — a struktúra jelölésére, tehát egyetlen elcsúszott szóköz csendben megváltoztathatja egy dokumentum jelentését. A JSON egyáltalán nem törődik a behúzással. Másodszor, a YAML támogatja a megjegyzéseket, a JSON nem. Bármilyen # megjegyzés a YAML-ban egyszerűen eltűnik, amikor JSON-t készítesz, mert nincs hova tenni. Harmadszor, a YAML-nak gazdagabb, implicit típusrendszere van. Szívesen olvas dátumokat, időbélyegeket és null-t számos írásmódban, és az idézőjel nélküli értékekből típusokat tippel. A JSON-nak kis, explicit típuskészlete van, és nincs kétértelműség. Érdemes megjegyezni, hogy a JSON technikailag a YAML 1.2 részhalmaza, ezért az érvényes JSON általában tisztán elemződik YAML-ként is, de fordítva ez nem garantált.

Beágyazott adatfa átalakulása két izzó strukturált formátum között ciánkék és arany színben
Ugyanaz az adatfa két formátumban kifejezve.

Konverziós csapdák, amikre figyelni kell

Az oda-vissza konverzió nem mindig veszteségmentes, és érdemes tudni, hol törhet el:

  • A Norvégia-probléma. A YAML 1.1 szabályai szerint az idézőjel nélküli NO a false logikai értékként elemződik, a yes, on és off pedig szintén logikai értékké válik. Egy országkód vagy egy kapcsolócímke true/false-ra válthat, mielőtt észrevennéd. Idézőjelezd az értékeket, amiket karakterláncként szánsz.
  • Szám-kényszerítés. Egy verzió, mint a 3.10, elveszítheti a végén lévő nullát és 3.1-gyé válhat, az 1.0 pedig számmá lesz akkor is, ha szövegnek szántad. Idézőjelezd a verziószámokat és azonosítókat.
  • A horgonyok és aliasok eltűnnek. A YAML &horgony és *alias hivatkozásainak nincs JSON megfelelője. Egy jó konverter kibontja őket a teljes értékükre, tehát az adat helyes marad, de a duplikáció-mentesítés elveszik — JSON-ból YAML-be majd vissza JSON-ba nem építi vissza az eredeti horgonyokat.
  • Megjegyzések és blokkskalárok. A megjegyzések elvesznek JSON-ná alakításkor. A többsoros blokkskalárok (| és >) sima JSON karakterláncokká omlanak össze \n escape-ekkel, tehát a vizuális formázási szándék elveszik.
  • Behúzás YAML-be visszaalakításkor. A JSON nem kódol behúzást, tehát a konverter egy konzisztens stílust választ. Nézd át, mielőtt egy tabulátor-érzékeny eszközbe illesztenéd.

Miért számít, hogy csak helyben történik

A konfigurációs fájlok és API-adatterhek pontosan azok a dolgok, amiket nem szabadna feltölteni egy véletlenszerű szerverre: gyakran hordoznak hosztneveket, tokeneket, belső szolgáltatásneveket, vagy ügyféladatokat. Ez a konverter az elemzés-és-kiírás lépést a böngésződben, JavaScripttel végzi. Semmi nem kerül háttérrendszerbe, semmi nem naplózódik, és az eszköz offline is működik, miután az oldal betöltődött. Illessz be egy Kubernetes secretet vagy egy CI munkafolyamatot azzal a bizalommal, hogy a gépeden marad.

Kapcsolódó eszközökre van szükséged? Böngészd a teljes adatkonverter-készletünket, tisztítsd meg a rendezetlen bemenetet a JSON formázóval, és térj vissza ide, amikor az API-világ és a konfigurációs világ között kell mozognod.

Gyakran ismételt kérdések

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

Nem. A konverzió teljes egészében a böngésződben, helyi JavaScript segítségével zajlik. A JSON-od vagy YAML-od soha nem kerül szerverre, tehát a titkok és konfigurációs fájlok privátak maradnak.

Miért változott váratlanul a true vagy false értékem a YAML-ban?

A YAML 1.1 az idézőjel nélküli szavakat, mint a yes, no, on és off, logikai értéknek kezeli — ez a Norvégia-probléma. Csomagolj idézőjelbe bármilyen értéket, amit karakterláncként szánsz, hogy szövegként élje túl a konverziót.

Mi történik a megjegyzéseimmel, ha YAML-t JSON-né alakítok?

A JSON-nak nincs megjegyzés-szintaxisa, tehát minden kettőskereszt-megjegyzés eltávolításra kerül a konverzió során. Ha meg szeretnéd őrizni a jegyzeteket, tartsd meg a hiteles másolatot YAML-ban.

Megmaradnak a YAML horgonyok és aliasok?

Kibontásra kerülnek a teljes értékükre, mert a JSON-nak nincs hivatkozási mechanizmusa. Az adat helyes marad, de a duplikáció-mentesítés nem állítható vissza, amikor visszaalakítod YAML-lé.

Konvertálhatok JSON-t YAML-lé, és YAML-t JSON-né is?

Igen, az eszköz mindkét irányban működik. Illessz be JSON-t, hogy YAML-t kapj, vagy illessz be YAML-t, hogy JSON-t kapj, és a konverter felismeri és elkészíti a másik formátumot.

Miért törik el a YAML, ha tabulátort használok?

A YAML szóközöket igényel a behúzáshoz, és elutasítja a tabulátorokat. Ha egy beillesztés nem elemződik, cseréld a tabulátorkaraktereket szóközökre, és tartsd konzisztensen a behúzást.