Mi ez az eszköz?
Az XML és a JSON egyaránt fa alakú adatformátumok, de eltérő helyeken jelennek meg: az örökölt vállalati API-k, SOAP-szolgáltatások, RSS/Atom hírcsatornák és sok konfigurációs formátum még mindig XML-t használ, míg a modern REST API-k és a JavaScript kód szinte kizárólag JSON-t. Ez az eszköz a kettő közötti fordítást végzi, hogy ne kelljen egyiket sem kézzel megírnod, amikor régi és új rendszereket integrálsz.
A konverzió közvetlenül a böngésző DOMParser API-jára épül XML olvasásához, és a W3C XML 1.0 specifikáció által definiált struktúrát követi az előállításánál — így a generált XML jólformázott, a fogadott XML pedig ugyanúgy elemződik, mint ahogy egy böngésző vagy bármely szabványmegfelelő XML-könyvtár elemezné.
Mivel az XML-nek vannak olyan fogalmai, amelyekkel a JSON nem rendelkezik (attribútumok, kevert szöveg/elem tartalom, kötelező egyetlen gyökérelem), a JSON-nak pedig vannak olyan fogalmai, amelyekkel az XML nem (natív tömbök, logikai értékek, számok), az eszköz egy dokumentált, széles körben használt konvenciót alkalmaz: egy XML attribútum `name="value"` a JSON `"@_name": "value"` kulcsává válik, az elem szöveges tartalma vagy az elem közvetlen string értékévé válik (ha nincsenek gyermekei vagy attribútumai), vagy egy `"#text"` kulccsá az attribútumok mellett, az azonos címkéjű ismétlődő testvérelemek pedig JSON tömbbé válnak.
Miért érdemes használni?
- Kétirányú — konvertáld a JSON-t XML-lé vagy az XML-t JSON-né ugyanarról a képernyőről.
- Helyesen kezeli a beágyazást — a beágyazott JSON objektumok beágyazott XML elemekké válnak és fordítva, bármilyen mélységben.
- A tömbök ismétlődő elemekké képződnek le — egy kulcs alatti JSON tömb annyi testvér XML elemmé válik ugyanazzal a címkével, és az ismétlődő XML címkék JSON tömbként térnek vissza.
- Az XML attribútumok megőrződnek — a `@_attribútumnév` konvencióval, így az attribútum-adat nem vész el némán.
- Másolás a vágólapra vagy letöltés .json vagy .xml fájlként.
- 100%-ban kliensoldali — semmi, amit beillesztesz, nem kerül feltöltésre sehova.
Használati útmutató
- Válassz irányt: "XML → JSON" vagy "JSON → XML".
- Illeszd be az adatodat a bemeneti mezőbe.
- Kattints a "Konvertálás" gombra.
- 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
{"user":{"name":"Alice","age":30}}Kimenet
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>Az egyetlen legfelső szintű JSON kulcs ("user") lesz az XML gyökérelem; ha a JSON-nak több legfelső szintű kulcsa van, az eszköz mindent egy <root> elembe csomagol, mivel az XML pontosan egy gyökérelemet igényel.
Gyakorlati tippek
- Egy örökölt XML konfiguráció (mint egy régi alkalmazás beállítási fájlja) migrálása egy modern JSON-alapú rendszerbe: illeszd be az XML-t, konvertáld, majd igazítsd a mezőneveket szükség szerint.
- Egy SOAP vagy XML-RPC végpont tesztelése JavaScriptből: konvertáld itt a JSON kérésed adatcsomagját XML-lé küldés előtt, vagy konvertáld vissza egy XML választ JSON-né a könnyű ellenőrzéshez.
- Ha a JSON-od tömböket használ olyan adatokhoz, amelyeket az XML ismétlődő elemekként ábrázolna, ügyelj arra, hogy a tömb egyetlen kulcs alá legyen beágyazva (pl. {"items":{"item":[1,2,3]}}), ahelyett hogy egy csupasz legfelső szintű tömb lenne, mivel az XML-nek nem lehet több gyökéreleme.
Miért fontos a @_ attribútum konvenció
A JSON/XML konverzió legkényesebb része, hogy az XML elemek két fajta adatot is hordozhatnak egyszerre — attribútumokat és gyermektartalmat —, míg egy egyszerű JSON objektumnak csak kulcsai és értékei vannak. Egy konvenció nélkül, amely elkülöníti ezeket, egy naiv konvertáló vagy teljesen elveszítené az attribútumokat, vagy összekeverné őket a gyermekelemekkel oly módon, hogy azt nem lehetne megbízhatóan visszakonvertálni. A `@_name` előtag konvenció (amelyet a JavaScript ökoszisztéma széles körben elfogadott könyvtárai is használnak) ezt úgy oldja meg, hogy az attribútumoknak egy elkülönült, egyértelmű kulcsformát ad, így a `<product id="42">Widget</product>` tisztán körbekonvertálódik `{"product":{"@_id":"42","#text":"Widget"}}`-ként, ahelyett hogy elveszítené az id-t, vagy rosszul találgatná, melyik érték melyikhez tartozik.
Gyakori kérdések
Mi történik egy több legfelső szintű kulcsot tartalmazó JSON-nal?
Az XML egyetlen gyökérelemet igényel, így ha a JSON objektumodnak több legfelső szintű kulcsa van (pl. {"a":1,"b":2}), a kimenet egy <root> elembe csomagolódik: <root><a>1</a><b>2</b></root>. Ha a JSON-nak pontosan egy legfelső szintű kulcsa van, az a kulcs közvetlenül a gyökérelem nevévé válik.
Hogyan jelennek meg az XML attribútumok JSON-ban?
Egy attribútum, mint <user id="7">, a "@_id": "7" kulccsá válik az eredményül kapott JSON objektumban. Ez egy gyakori, dokumentált konvenció (amelyet olyan könyvtárak használnak, mint a fast-xml-parser), amely megkülönböztethetővé teszi az attribútumokat a gyermekelemektől.
Az ismétlődő XML elemek JSON tömbbé válnak?
Igen. Ha egy elemnek több, azonos címkéjű gyermeke van, pl. <items><item>1</item><item>2</item></items>, a JSON-ná konvertálás {"items":{"item":["1","2"]}}-t eredményez. Ha ezt a JSON-t visszakonvertálod XML-lé, az ismétlődő <item> elemek visszaállnak.
Megőrződnek a számok és logikai értékek az XML-JSON konverziónál?
Az XML-nek nincs natív fogalma a számokra vagy logikai értékekre — minden szöveg —, így a szöveges tartalom JSON stringként jön át (pl. "30" a 30 helyett). Ha numerikus típusokra van szükséged, ezeket a mezőket utólag kell konvertálnod.
Feltöltésre kerül valahova az adatom?
Nem. Az elemzés és a konverzió teljes egészében JavaScriptben, a böngésződben történik, a beépített DOMParser API-t használva — semmi sem kerül elküldésre egy szerverre, így biztonságosan használható privát konfigurációs fájlokkal vagy belső API-adatcsomagokkal.