Co je tento nástroj?
XML i JSON jsou stromové datové formáty, ale objevují se na různých místech: starší podnikové API, SOAP služby, RSS/Atom feedy a mnoho konfiguračních formátů stále mluví XML, zatímco moderní REST API a JavaScript kód mluví téměř výhradně JSON. Tento nástroj mezi nimi překládá, abyste nemuseli ručně psát ani jeden z nich při integraci starých a nových systémů.
Převod je postaven přímo na API DOMParser prohlížeče pro čtení XML a při jeho generování dodržuje strukturu definovanou specifikací W3C XML 1.0 — takže XML, které generuje, je dobře formované a XML, které přijímá, se zpracovává stejným způsobem, jako by ho zpracoval prohlížeč nebo jakákoli standardům vyhovující knihovna XML.
Protože XML má koncepty, které JSON nemá (atributy, smíšený text/elementový obsah, povinný jediný kořenový element), a JSON má koncepty, které XML nemá (nativní pole, booleany, čísla), nástroj používá zdokumentovanou, široce používanou konvenci: atribut XML `name="value"` se stane klíčem JSON `"@_name": "value"`, textový obsah elementu se stane buď přímou řetězcovou hodnotou elementu (když nemá žádné potomky ani atributy), nebo klíčem `"#text"` vedle jakýchkoli atributů, a opakované sourozenecké elementy se stejnou značkou se stanou polem JSON.
Proč ho používat?
- Obousměrný — převádějte JSON na XML nebo XML na JSON na jedné obrazovce.
- Správně zpracovává vnoření — vnořené objekty JSON se stanou vnořenými elementy XML a naopak, v jakékoli hloubce.
- Pole se mapují na opakované elementy — pole JSON pod klíčem se stane odpovídajícím počtem sourozeneckých elementů XML se stejnou značkou, a opakované značky XML se vrátí jako pole JSON.
- Atributy XML se zachovávají — pomocí konvence `@_attributeName`, takže se data atributů tiše neztratí.
- Kopírování do schránky nebo stažení jako soubor .json nebo .xml.
- 100% zpracování na straně klienta — nic, co vložíte, se nikam nenahrává.
Jak se používá
- Vyberte směr: "XML → JSON" nebo "JSON → XML".
- Vložte svá data do vstupního pole.
- Klikněte na "Convert".
- Zkontrolujte výsledek, poté ho zkopírujte, nebo klikněte na "Download" pro uložení souboru.
Příklad
Vstup
{"user":{"name":"Alice","age":30}}Výstup
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>Jediný klíč na nejvyšší úrovni JSONu ("user") se stane kořenovým elementem XML; pokud má JSON víc klíčů na nejvyšší úrovni, nástroj vše obalí do elementu <root>, protože XML vyžaduje přesně jeden kořen.
Praktické tipy
- Migrace staré konfigurace XML (jako soubor nastavení staré aplikace) na moderní systém založený na JSON: vložte XML, převeďte a podle potřeby upravte názvy polí.
- Testování koncového bodu SOAP nebo XML-RPC z JavaScriptu: nejdřív sem převeďte svůj payload požadavku JSON na XML před odesláním, nebo převeďte odpověď XML zpět na JSON pro snadnou kontrolu.
- Pokud váš JSON používá pole pro data, která by XML reprezentovalo jako opakované elementy, ujistěte se, že je pole nejdřív vnořené pod jedním klíčem (např. {"items":{"item":[1,2,3]}}) místo holého pole na nejvyšší úrovni, protože XML nemůže mít víc kořenových elementů.
Proč záleží na konvenci atributu @_
Nejchoulostivější částí převodu JSON/XML je, že elementy XML mohou nést dva druhy dat najednou — atributy a podřízený obsah — zatímco obyčejný objekt JSON má jen klíče a hodnoty. Bez konvence, která by je udržela oddělené, by naivní převodník buď atributy zcela ztratil, nebo je smíchal s podřízenými elementy způsobem, který nelze spolehlivě převést zpět. Konvence prefixu `@_name` (používaná i široce rozšířenými knihovnami v ekosystému JavaScriptu) to řeší tím, že dá atributům odlišný, jednoznačný tvar klíče, takže `<product id="42">Widget</product>` se obousměrně čistě převede jako `{"product":{"@_id":"42","#text":"Widget"}}` místo ztráty id nebo nesprávného odhadování, která hodnota je která.
Časté dotazy
Co se stane s JSONem s víc než jedním klíčem na nejvyšší úrovni?
XML vyžaduje jediný kořenový element, takže pokud má váš objekt JSON víc klíčů na nejvyšší úrovni (např. {"a":1,"b":2}), výstup se obalí do elementu <root>: <root><a>1</a><b>2</b></root>. Pokud má váš JSON přesně jeden klíč na nejvyšší úrovni, stane se tento klíč přímo názvem kořenového elementu.
Jak se atributy XML reprezentují v JSONu?
Atribut jako <user id="7"> se stane klíčem "@_id": "7" ve výsledném objektu JSON. Jde o běžnou, zdokumentovanou konvenci (používanou knihovnami jako fast-xml-parser), která udržuje atributy rozlišitelné od podřízených elementů.
Stanou se opakované elementy XML polem JSON?
Ano. Pokud má element víc podřízených prvků se stejným názvem značky, např. <items><item>1</item><item>2</item></items>, převod na JSON vytvoří {"items":{"item":["1","2"]}}. Převod tohoto JSONu zpět na XML znovu vytvoří opakované elementy <item>.
Zachovávají se čísla a booleany při převodu XML na JSON?
XML nemá nativní koncept čísel ani booleanů — vše je text — takže textový obsah přejde jako řetězec JSON (např. "30" místo 30). Pokud potřebujete číselné typy, budete tato pole muset dodatečně převést.
Nahrávají se moje data někam?
Ne. Zpracování a převod probíhá zcela v JavaScriptu ve vašem prohlížeči, pomocí vestavěného API DOMParser — nic se neposílá na server, takže je bezpečné to používat i se soukromými konfiguračními soubory nebo interními payloady API.