Čo je tento nástroj?
XML a JSON sú oba stromovo štruktúrované dátové formáty, no objavujú sa na rôznych miestach: staršie enterprise API, SOAP služby, RSS/Atom kanály a mnohé konfiguračné formáty stále používajú XML, zatiaľ čo moderné REST API a JavaScript kód takmer výhradne používajú JSON. Tento nástroj prekladá medzi nimi, aby ste nemuseli ručne písať ani jeden z nich pri integrácii starých a nových systémov.
Konverzia je postavená priamo na API DOMParser prehliadača na čítanie XML, a sleduje štruktúru definovanú W3C XML 1.0 špecifikáciou pri jej produkovaní — takže XML, ktoré generuje, je dobre sformované a XML, ktoré prijíma, je parsované rovnako ako by ho parsoval prehliadač alebo akákoľvek štandardom vyhovujúca XML knižnica.
Keďže XML má koncepty, ktoré JSON nemá (atribúty, zmiešaný text/elementový obsah, povinný jediný koreňový element) a JSON má koncepty, ktoré XML nemá (natívne polia, boolean, čísla), nástroj používa zdokumentovanú, široko používanú konvenciu: XML atribút `name="value"` sa stane JSON kľúčom `"@_name": "value"`, textový obsah elementu sa stane buď priamou reťazcovou hodnotou elementu (keď nemá deti ani atribúty), alebo kľúčom `"#text"` popri akýchkoľvek atribútoch, a opakované súrodenecké elementy s rovnakou značkou sa stanú JSON poľom.
Prečo ho používať?
- Obojsmerný — prekonvertujte JSON na XML alebo XML na JSON z tej istej obrazovky.
- Správne zvláda vnorenie — vnorené JSON objekty sa stanú vnorenými XML elementmi a naopak, na akejkoľvek hĺbke.
- Polia sa mapujú na opakované elementy — JSON pole pod kľúčom sa stane toľkými súrodeneckými XML elementmi s rovnakou značkou, a opakované XML značky sa vrátia ako JSON pole.
- XML atribúty sú zachované — pomocou konvencie `@_attributeName`, takže dáta atribútov nie sú ticho zahodené.
- Skopírovanie do schránky alebo stiahnutie ako .json alebo .xml súbor.
- 100% na strane klienta — nič z toho, čo vložíte, sa nikam nenahráva.
Ako sa používa
- Vyberte smer: "XML → JSON" alebo "JSON → XML".
- Vložte svoje dáta do vstupného poľa.
- Kliknite na "Convert".
- Skontrolujte výsledok, potom ho skopírujte alebo kliknite na "Download" pre uloženie súboru.
Prí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ý kľúč najvyššej úrovne JSON ("user") sa stane koreňovým elementom XML; ak má JSON viac než jeden kľúč najvyššej úrovne, nástroj obalí všetko do elementu <root>, keďže XML vyžaduje presne jeden koreň.
Praktické tipy
- Migrácia staršej XML konfigurácie (ako súbor nastavení starej aplikácie) na moderný systém založený na JSON: vložte XML, prekonvertujte a upravte názvy polí podľa potreby.
- Testovanie SOAP alebo XML-RPC endpointu z JavaScriptu: prekonvertujte svoj JSON požiadavkový payload na XML tu pred odoslaním, alebo prekonvertujte XML odpoveď späť na JSON kvôli jednoduchšej kontrole.
- Ak váš JSON používa polia pre dáta, ktoré by XML reprezentoval ako opakované elementy, uistite sa, že je pole najprv vnorené pod jediný kľúč (napr. {"items":{"item":[1,2,3]}}), namiesto holého poľa najvyššej úrovne, keďže XML nemôže mať viacero koreňových elementov.
Prečo záleží na konvencii atribútu @_
Najzložitejšia časť konverzie JSON/XML je, že XML elementy môžu niesť dva druhy dát naraz — atribúty a podradený obsah — zatiaľ čo obyčajný JSON objekt má len kľúče a hodnoty. Bez konvencie na ich oddelenie by naivný konvertor buď úplne stratil atribúty, alebo by ich zmiešal s podradenými elementmi spôsobom, ktorý sa nedá spoľahlivo skonvertovať späť. Konvencia prefixu `@_name` (tiež používaná v širokoprijímaných knižniciach v ekosystéme JavaScript) rieši toto tým, že dáva atribútom odlišný, jednoznačný tvar kľúča, takže `<product id="42">Widget</product>` sa čisto prevedie tam a späť ako `{"product":{"@_id":"42","#text":"Widget"}}` namiesto straty id alebo nesprávneho hádania, ktorá hodnota bola ktorá.
Časté otázky
Čo sa stane s JSON, ktorý má viac než jeden kľúč najvyššej úrovne?
XML vyžaduje jediný koreňový element, takže ak má váš JSON objekt viacero kľúčov najvyššej úrovne (napr. {"a":1,"b":2}), výstup je obalený do elementu <root>: <root><a>1</a><b>2</b></root>. Ak má váš JSON presne jeden kľúč najvyššej úrovne, tento kľúč sa stane priamo názvom koreňového elementu.
Ako sú reprezentované XML atribúty v JSON?
Atribút ako <user id="7"> sa stane kľúčom "@_id": "7" vo výslednom JSON objekte. Toto je bežná, zdokumentovaná konvencia (používaná knižnicami ako fast-xml-parser), ktorá udržuje atribúty rozlíšiteľné od podradených elementov.
Stanú sa opakované XML elementy JSON poľom?
Áno. Ak má element viacero detí s rovnakým názvom značky, napr. <items><item>1</item><item>2</item></items>, konverzia na JSON vytvorí {"items":{"item":["1","2"]}}. Konverzia tohto JSON späť na XML reprodukuje opakované elementy <item>.
Sú čísla a boolean zachované pri konverzii XML na JSON?
XML nemá natívny koncept čísel ani boolean — všetko je text — takže textový obsah prichádza ako JSON reťazec (napr. "30" namiesto 30). Ak potrebujete číselné typy, budete musieť tieto polia následne skonvertovať.
Nahrávajú sa moje dáta niekam?
Nie. Parsovanie a konverzia prebieha úplne v JavaScripte vo vašom prehliadači, pomocou zabudovaného API DOMParser — nič sa neposiela na server, takže je bezpečné použiť to so súkromnými konfiguračnými súbormi alebo internými API payloadmi.