Što je ovaj alat?
XML i JSON su oba formata podataka u obliku stabla, ali se pojavljuju na različitim mjestima: naslijeđeni poslovni API-ji, SOAP servisi, RSS/Atom feedovi i mnogi konfiguracijski formati i dalje koriste XML, dok moderni REST API-ji i JavaScript kod gotovo isključivo koriste JSON. Ovaj alat prevodi između njih dvoje tako da ne morate ručno pisati nijedan pri integraciji starih i novih sustava.
Pretvorba je izgrađena izravno na pregledničkom DOMParser API-ju za čitanje XML-a, i slijedi strukturu definiranu W3C XML 1.0 specifikacijom za njegovu proizvodnju — tako da je generirani XML ispravno oblikovan, a prihvaćeni XML se parsira na isti način kao što bi ga parsirao preglednik ili bilo koja standardima usklađena XML biblioteka.
Budući da XML ima koncepte kojih JSON nema (atributi, miješani tekst/element sadržaj, obavezan jedinstveni korijenski element), a JSON ima koncepte kojih XML nema (izvorni nizovi, booleani, brojevi), alat koristi dokumentiranu, široko korištenu konvenciju: XML atribut `name="value"` postaje JSON ključ `"@_name": "value"`, tekstualni sadržaj elementa postaje ili izravna string vrijednost elementa (kad nema djece ili atributa) ili ključ `"#text"` uz sve atribute, a ponovljeni sestrinski elementi s istom oznakom postaju JSON niz.
Zašto ga koristiti?
- Dvosmjerno — pretvorite JSON u XML ili XML u JSON s istog ekrana.
- Ispravno rukuje ugniježđivanjem — ugniježđeni JSON objekti postaju ugniježđeni XML elementi i obrnuto, na bilo kojoj dubini.
- Nizovi se mapiraju na ponovljene elemente — JSON niz pod ključem postaje toliko sestrinskih XML elemenata s istom oznakom, a ponovljene XML oznake se vraćaju kao JSON niz.
- XML atributi se čuvaju — koristeći konvenciju `@_nazivAtributa`, tako da se podaci atributa ne gube nezamijećeno.
- Kopirajte u međuspremnik ili preuzmite kao .json ili .xml datoteku.
- 100% na strani klijenta — ništa što zalijepite se ne šalje nikamo.
Kako ga koristiti
- Odaberite smjer: "XML → JSON" ili "JSON → XML".
- Zalijepite svoje podatke u okvir za unos.
- Kliknite "Convert".
- Pregledajte rezultat, zatim ga kopirajte ili kliknite "Download" da spremite datoteku.
Primjer
Ulaz
{"user":{"name":"Alice","age":30}}Izlaz
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>Jedini korijenski JSON ključ ("user") postaje XML korijenski element; ako JSON ima više od jednog korijenskog ključa, alat sve omata u element <root> jer XML zahtijeva točno jedan korijen.
Praktični savjeti
- Migracija naslijeđene XML konfiguracije (poput starog datoteke postavki aplikacije) na moderni JSON sustav: zalijepite XML, pretvorite i prilagodite imena polja po potrebi.
- Testiranje SOAP ili XML-RPC krajnje točke iz JavaScripta: pretvorite svoj JSON zahtjev u XML ovdje prije slanja, ili pretvorite XML odgovor natrag u JSON radi lakšeg pregleda.
- Ako vaš JSON koristi nizove za podatke koje bi XML predstavio kao ponovljene elemente, pobrinite se da niz prvo bude ugniježđen pod jednim ključem (npr. {"items":{"item":[1,2,3]}}) umjesto golog korijenskog niza, jer XML ne može imati više korijenskih elemenata.
Zašto je konvencija @_ atributa važna
Najzahtjevniji dio JSON/XML pretvorbe je što XML elementi mogu istovremeno nositi dvije vrste podataka — atribute i podređeni sadržaj — dok obični JSON objekt ima samo ključeve i vrijednosti. Bez konvencije koja ih razdvaja, naivni pretvarač bi ili potpuno izgubio atribute ili ih pomiješao s podređenim elementima na način koji se ne može pouzdano vratiti natrag. Konvencija prefiksa `@_name` (koju koriste i široko prihvaćene biblioteke u JavaScript ekosustavu) rješava ovo dajući atributima jasan, nedvosmislen oblik ključa, tako da se `<product id="42">Widget</product>` čisto vraća kao `{"product":{"@_id":"42","#text":"Widget"}}` umjesto gubljenja id-a ili pogrešnog nagađanja koja vrijednost je koja.
Često postavljana pitanja
Što se dogodi s JSON-om koji ima više od jednog korijenskog ključa?
XML zahtijeva jedinstveni korijenski element, pa ako vaš JSON objekt ima više korijenskih ključeva (npr. {"a":1,"b":2}), izlaz se omata u element <root>: <root><a>1</a><b>2</b></root>. Ako vaš JSON ima točno jedan korijenski ključ, taj ključ izravno postaje ime korijenskog elementa.
Kako se XML atributi predstavljaju u JSON-u?
Atribut poput <user id="7"> postaje ključ "@_id": "7" u rezultirajućem JSON objektu. Ovo je uobičajena, dokumentirana konvencija (koju koriste biblioteke poput fast-xml-parser) koja održava atribute razlučivima od podređenih elemenata.
Postaju li ponovljeni XML elementi JSON niz?
Da. Ako element ima više djece s istim imenom oznake, npr. <items><item>1</item><item>2</item></items>, pretvorba u JSON proizvodi {"items":{"item":["1","2"]}}. Pretvorba tog JSON-a natrag u XML ponovno stvara ponovljene <item> elemente.
Čuvaju li se brojevi i booleani prilikom pretvorbe XML-a u JSON?
XML nema izvorni koncept brojeva ili booleana — sve je tekst — pa tekstualni sadržaj dolazi kao JSON string (npr. "30" umjesto 30). Ako trebate numeričke tipove, morat ćete naknadno pretvoriti ta polja.
Šalju li se moji podaci negdje?
Ne. Parsiranje i pretvorba odvijaju se u potpunosti u JavaScriptu u vašem pregledniku, koristeći ugrađeni DOMParser API — ništa se ne šalje na server, tako da je sigurno koristiti s privatnim konfiguracijskim datotekama ili internim API payloadima.