JSON na XML a zpět: praktický konvertor pro dva datové světy
Většina vývojářů pracuje s XML i JSON, ať chtějí nebo ne. Moderní webová API mluví téměř výhradně JSON, ale ve chvíli, kdy se dotknete banky, pojišťovny, vládního rozhraní, podnikového ERP nebo staré služby SOAP, se znovu objeví XML. Konvertor JSON na XML na této stránce převádí JSON na XML a XML zpátky na JSON přímo ve vašem prohlížeči, takže se mezi těmito dvěma formáty můžete pohybovat, aniž byste kopírovali citlivé payloady do vzdálené služby.

Co XML a JSON vlastně jsou
XML (Extensible Markup Language) je značkovací formát postavený na vnořených tazích, atributech a jmenných prostorech. Byl navržen pro dokumenty a strukturovanou výměnu dat a nese s sebou spoustu mechaniky: schémata (XSD), jmenné prostory, procesní instrukce, komentáře, sekce CDATA a formální deklaraci nahoře. Právě tato bohatost je důvod, proč XML stále dominuje ve starších a podnikových systémech. Najdete ho ve webových službách SOAP, RSS a Atom kanálech, konfiguračních souborech (Spring, Maven, konfiguracích aplikací .NET) a finančních zprávových standardech jako SWIFT a ISO 20022, kde si banky a pojišťovny stále každý den vyměňují XML.
JSON (JavaScript Object Notation) je mnohem jednodušší: objekty s dvojicemi klíč/hodnota, pole, řetězce, čísla, booleovské hodnoty a null. Mapuje se téměř jedna ku jedné na datové struktury téměř každého programovacího jazyka, což je přesně důvod, proč ovládl moderní webová API, koncové body REST, mobilní aplikace a konfigurační soubory jako package.json. JSON je typicky o 30 až 50 procent menší než ekvivalentní XML a parsuje se znatelně rychleji, částečně proto, že vynechává uzavírací tagy a mechaniku atributů, kvůli kterým je XML zdlouhavé.
Klíčové rozdíly, na kterých při konverzi záleží
Oba formáty se překrývají natolik, že se dají na sebe namapovat, ale ne čistě. Za téměř veškeré tření mohou pár strukturálních rozdílů:
- Atributy versus podřízené uzly. XML rozlišuje mezi
<user id="1">(atribut) a<user><id>1</id></user>(podřízený element). JSON žádný takový koncept nemá, takže si ho konvertory musí vymyslet. Podle konvence se atributy skládají do klíče jako@attributesnebo se prefixují znakem@, zatímco textový obsah elementu skončí v klíči jako#text. - Pole. JSON má nativní pole. XML ne. Seznam v XML je jednoduše stejný tag opakovaný vícekrát, jako tři elementy
<item>za sebou. Konvertory musí odvodit, kdy se mají opakující se sourozenci sbalit do pole JSON a kdy má jediný element zůstat obyčejným objektem. - Jmenné prostory. XML používá jmenné prostory (prefixy typu
xmlns:soap) k předcházení kolizím názvů napříč schématy. JSON nemá nic ekvivalentního, takže prefixy buď přežijí jako doslovné znaky v klíčích, nebo se odstraní. - Zdlouhavost a metadata. XML může k uzlu připojit metadata pomocí atributů; JSON vyjadřuje vše jako klíče a hodnoty. Díky tomu je JSON kompaktnější a snáze čitelný, zatímco XML si díky schématům XSD zachovává validační sílu.
Úskalí konverze, na která si dát pozor
Klasickou chybou je proces JSON na XML a zpátky na JSON a očekávat totožný výsledek. Konverze je ztrátová v obou směrech, pokud pravidla nemáte pod kontrolou sami. Mějte na paměti:
- Atributy se pomíchají. Když převádíte JSON na XML, nástroj potřebuje pravidlo, které klíče se stanou atributy a které elementy. Když jdete opačným směrem, atributy musí někam skončit, a toto „někam" (prefix
@, blok@attributes) se mezi knihovnami liší. Pokud navazující parser očekává jinou konvenci, data vypadají špatně, i když se nic neztratilo. - Jeden element versus pole. Kanál XML s jedním
<item>vytvoří objekt JSON; stejný kanál se dvěma položkami vytvoří pole JSON. Kód, který předpokládá pole, se rozbije na případu s jednou položkou. To je běžný zdroj chyb při parsování RSS a SOAP. - Jmenné prostory unikají nebo mizí. V závislosti na nástroji se
soap:Bodymůže stát klíčem doslovně pojmenovanýmsoap:Body, nebo se prefix úplně odstraní, čímž se změní význam dokumentu. - Smíšený obsah a typy. XML zachází se vším jako s textem, takže hodnota jako
truenebo42může po konverzi na JSON zůstat řetězcem, zatímco opačný směr nemá žádné nativní místo pro komentáře nebo CDATA.

Proč záleží jen na lokální konverzi
Payloady JSON a XML bývají často to nejcitlivější, s čím vývojář pracuje: odpovědi API s tokeny, zprávy SOAP s čísly účtů, konfigurační soubory s přihlašovacími údaji. Konvertor, který běží ve vašem prohlížeči, nic z toho nikdy nenahraje. Parsování a serializace probíhají na vašem počítači, nic se neposílá na server a nástroj lze používat offline, jakmile se stránka jednou načte. Pro ladění produkčních dat nebo cokoli podléhajícího předpisům je to rozdíl mezi bezpečnou rychlou kontrolou a náhodným únikem dat.
Pokud potřebujete výsledek pak ještě vyčistit, spárujte tento nástroj s naší nabídkou konvertorů dat, nebo výstup upravte formátovačem JSON, než ho předáte dalšímu nástroji ve vaší pipeline.
Často kladené otázky
Nahrává konvertor můj JSON nebo XML někam?
Ne. Konverze JSON na XML i XML na JSON probíhá zcela ve vašem prohlížeči. Vaše data nikdy neopustí vaše zařízení a nástroj funguje offline poté, co se stránka načte.
Jak se zachází s atributy XML při konverzi na JSON?
Atributy XML se umístí do vyhrazeného klíče, obvykle s prefixem znaku zavináč nebo seskupené v bloku attributes, protože JSON nemá žádný nativní koncept atributu. Textový obsah elementu se ukládá odděleně, takže obojí konverzi přežije.
Proč se z mého jediného elementu XML stal objekt místo pole?
XML nemá nativní pole, takže seznam je jen opakovaný tag. Když je přítomný jen jeden element, konvertory ho nedokážou odlišit od běžného objektu, takže se stane objektem. Dva nebo více sourozenců se stejným názvem tagu se sbalí do pole JSON.
Co se stane se jmennými prostory XML jako soap nebo xmlns?
JSON nemá žádný ekvivalent jmenných prostorů XML. V závislosti na konverzi se prefix zachová jako doslovný text uvnitř klíče, nebo se odstraní. Pokud váš navazující konzument spoléhá na prefixy jmenných prostorů, zkontrolujte výstup.
Můžu převést JSON zpátky na XML a dostat původní dokument?
Ne vždy přesně. Konverze je ztrátová v obou směrech, protože funkce XML jako komentáře, CDATA a rozlišení mezi atributem a elementem nemají čistý protějšek v JSON. Oběh tam a zpět funguje nejlépe, když máte pravidla pojmenování pod kontrolou na obou stranách.
Kde se XML stále používá ve srovnání s JSON?
XML žije ve starších a podnikových systémech: webové služby SOAP, kanály RSS a Atom, konfigurační soubory a finanční zprávy jako SWIFT a ISO 20022. JSON dominuje moderním webovým API, koncovým bodům REST a mobilním aplikacím.
