← Összes eszköz

JSON - XML Konverter

Alakíts JSON-t XML-lé és XML-t JSON-ná azonnal a böngésződben. Csak helyben, privátan, megjegyzésekkel az attribútumokról, tömbökről, névterekről és buktatókról.

JSON és XML oda-vissza: gyakorlati konverter két adatvilághoz

A legtöbb fejlesztő dolgozik XML-lel és JSON-nal is, akár akarja, akár nem. A modern webes API-k szinte kizárólag JSON-t beszélnek, de amint hozzáérsz egy bankhoz, biztosítóhoz, kormányzati végponthoz, vállalati ERP-hez, vagy egy régi SOAP-szolgáltatáshoz, az XML újra előkerül. Az ezen az oldalon található JSON-XML konverter JSON-t alakít XML-lé és XML-t vissza JSON-né közvetlenül a böngésződben, tehát mozoghatsz e két formátum között anélkül, hogy érzékeny adatterheket másolnál egy távoli szolgáltatásba.

Izzó, beágyazott JSON kapcsos zárójelek átalakulnak zárójelezett XML címkék fájává sötét indigó háttéren
A JSON objektumok és az XML címkefák ugyanazt az adatot írják le eltérő formában.

Mi is valójában az XML és a JSON

Az XML (Extensible Markup Language) egy beágyazott címkékre, attribútumokra és névterekre épülő jelölőformátum. Dokumentumokhoz és strukturált adatcseréhez tervezték, és sok gépezetet cipel: sémákat (XSD), névtereket, feldolgozási utasításokat, megjegyzéseket, CDATA szekciókat, és egy formális deklarációt a tetején. Ez a gazdagság az oka annak, hogy az XML még mindig uralja a régi és vállalati rendszereket. Megtalálod SOAP webszolgáltatásokban, RSS és Atom hírcsatornákban, konfigurációs fájlokban (Spring, Maven, .NET app-configok), irodai dokumentumformátumokban, és olyan pénzügyi üzenetküldési szabványokban, mint a SWIFT és az ISO 20022, ahol a bankok és biztosítók naponta cserélnek XML-t.

A JSON (JavaScript Object Notation) sokkal egyszerűbb: kulcs/érték párokból álló objektumok, tömbök, karakterláncok, számok, logikai értékek és null. Szinte egy az egyben leképeződik szinte minden programozási nyelv adatstruktúráira, ami pontosan az oka annak, hogy átvette a hatalmat a modern webes API-k, REST végpontok, mobilappok, és olyan konfigurációs fájlok felett, mint a package.json. A JSON jellemzően 30-50 százalékkal kisebb, mint az egyenértékű XML, és észrevehetően gyorsabban elemződik, részben azért, mert elhagyja a záró címkéket és attribútum-gépezetet, ami körülményessé teszi az XML-t.

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

A két formátum eléggé átfedi egymást ahhoz, hogy egymásra leképezhetők legyenek, de nem tökéletesen. Néhány strukturális különbség okozza szinte az összes súrlódást:

  • Attribútumok kontra gyermekcsomópontok. Az XML megkülönbözteti a <user id="1">-t (attribútum) a <user><id>1</id></user>-tól (gyermekelem). A JSON-nak nincs ilyen fogalma, tehát a konverterek kitalálnak egyet. Egyezmény szerint az attribútumokat egy olyan kulcsba hajtogatják, mint a @attributes, vagy @ előtaggal látják el, míg az elemek szövege egy olyan kulcsba kerül, mint a #text.
  • Tömbök. A JSON-nak natív tömbjei vannak. Az XML-nek nincsenek. Egy lista az XML-ben egyszerűen ugyanaz a címke ismételve, mint három <item> elem egymás után. A konvertereknek ki kell találniuk, mikor kell az ismételt testvérelemeket JSON tömbbé összeomlasztani, és mikor maradjon egy egyszeres elem sima objektum.
  • Névterek. Az XML névtereket használ (a xmlns:soap előtagokat) a névütközések elkerülésére a sémák között. A JSON-nak nincs ezzel egyenértékű megoldása, tehát az előtagok vagy szó szerinti karakterként élnek túl a kulcsokban, vagy eltávolításra kerülnek.
  • Bőbeszédűség és metaadat. Az XML attribútumokon keresztül tud metaadatot csatolni egy csomóponthoz; a JSON mindent kulcsokkal és értékekkel fejez ki. Ez teszi a JSON-t kompaktabbá és könnyebben olvashatóvá, míg az XML megőrzi az érvényesítési erejét az XSD sémákon keresztül.

Konverziós csapdák, amikre figyelni kell

A JSON-t XML-lé, majd vissza JSON-né alakítani, és azonos eredményt várni a klasszikus hiba. A konverzió mindkét irányban veszteséges, hacsak nem te irányítod a szabályokat. Tartsd szem előtt a következőket:

  • Az attribútumok összekavarodnak. Amikor JSON-t alakítasz XML-lé, az eszköznek szüksége van egy szabályra, hogy mely kulcsok legyenek attribútumok és melyek elemek. Amikor a másik irányba mész, az attribútumoknak valahol el kell helyezkedniük, és ez a "valahol" (@ előtag, @attributes blokk) könyvtáranként eltér. Ha egy alsóbb szintű elemző más egyezményt vár, az adat rossznak tűnik, még ha semmi nem is veszett el.
  • Egyetlen elem kontra tömb. Egy XML-hírcsatorna egyetlen <item>-mel egy JSON objektumot ad; ugyanaz a hírcsatorna két elemmel egy JSON tömböt ad. Az a kód, ami tömböt feltételez, elromlik az egyetlen elemes esetben. Ez az RSS- és SOAP-elemzési hibák gyakori forrása.
  • A névterek szivárognak vagy eltűnnek. Az eszköztől függően a soap:Body szó szerint soap:Body nevű kulccsá válhat, vagy az előtag teljesen eltávolítható, megváltoztatva a dokumentum jelentését.
  • Vegyes tartalom és típusok. Az XML mindent szövegként kezel, tehát egy olyan érték, mint a true vagy 42, karakterlánc maradhat JSON-né alakítás után, míg a fordított irányban nincs natív hely a megjegyzések vagy CDATA számára.
Két strukturált adatfa összekötve absztrakt, ciánkék és arany fényből álló jelölőcsomópontokkal
A formátumok közötti leképezés azt jelenti, hogy eldöntjük, hogyan fordítódnak az attribútumok, tömbök és névterek.

Miért számít a kizárólag helyi konverzió

A JSON és XML adatterhek gyakran a legérzékenyebb dolgok, amikkel egy fejlesztő találkozik: token-eket tartalmazó API-válaszok, számlaszámokkal teli SOAP üzenetek, hitelesítő adatokat tartalmazó konfigurációs fájlok. Egy olyan konverter, ami a böngésződben fut, soha nem tölti fel ezek egyikét sem. Az elemzés és szerializálás a gépeden történik, semmi nem kerül szerverre, és offline is használhatod az eszközt, miután az oldal betöltődött. Termelési adatok hibakeresésénél vagy bármi, ami megfelelőségi szabályozás alatt áll, ez a különbség egy biztonságos gyors ellenőrzés és egy véletlen adatszivárgás között.

Ha utólag meg kell tisztítanod az eredményt, párosítsd ezt a többi adatkonverterünkkel, vagy rendezd a kimenetet a JSON formázóval, mielőtt átadnád a folyamat következő eszközének.

Gyakran ismételt kérdések

Feltölti a konverter a JSON-omat vagy XML-emet valahova?

Nem. Mind a JSON-XML, mind az XML-JSON konverzió teljes egészében a böngésződben fut. Az adatod soha nem hagyja el az eszközödet, és az eszköz offline is működik az oldal betöltése után.

Hogyan kezelődnek az XML attribútumok JSON-né alakításkor?

Az XML attribútumok egy dedikált kulcsba kerülnek, gyakran egy kukac jellel ellátva vagy egy attribútumblokk alá csoportosítva, mivel a JSON-nak nincs natív attribútum-fogalma. Az elem szöveges tartalma külön tárolódik, hogy mindkettő túlélje a konverziót.

Miért lett egyetlen XML elemből objektum tömb helyett?

Az XML-nek nincsenek natív tömbjei, tehát egy lista egyszerűen egy ismételt címke. Amikor csak egy elem van jelen, a konverterek nem tudják megkülönböztetni egy sima objektumtól, tehát objektum lesz belőle. Két vagy több, azonos címkéjű testvérelem JSON tömbbé omlik össze.

Mi történik az olyan XML névterekkel, mint a soap vagy xmlns?

A JSON-nak nincs megfelelője az XML névtereknek. A konverziótól függően az előtag szó szerinti szövegként megmarad a kulcsban, vagy eltávolításra kerül. Ellenőrizd a kimenetet, ha az alsóbb szintű felhasználód a névtér-előtagokra támaszkodik.

Visszaalakíthatom a JSON-t XML-lé, és megkapom az eredeti dokumentumot?

Nem mindig pontosan. A konverzió mindkét irányban veszteséges, mert az olyan XML-jellemzőknek, mint a megjegyzések, CDATA, és az attribútum kontra elem megkülönböztetés, nincs tiszta JSON megfelelője. Az oda-vissza konverzió akkor működik a legjobban, ha te irányítod a névadási szabályokat mindkét oldalon.

Hol használják még mindig az XML-t a JSON-hoz képest?

Az XML régi és vállalati rendszerekben él: SOAP webszolgáltatásokban, RSS és Atom hírcsatornákban, konfigurációs fájlokban, és olyan pénzügyi üzenetküldésben, mint a SWIFT és az ISO 20022. A JSON uralja a modern webes API-kat, REST végpontokat és mobilappokat.