XML to JSON Converter
Free browser-based XML to JSON converter — no sign-up, no upload required. Maps XML attributes to @keys, nests elements, and turns repeated tags into arrays, entirely client-side.
अपडेट किया गया
अक्सर पूछे जाने वाले प्रश्न
How is an element that has both an attribute and text content converted, like <price currency="USD">19.99</price>?
The attribute forces the element to become a JSON object rather than a plain string, since a plain string value has nowhere to hang the attribute. The text content moves to a #text key alongside the attribute key: {"price": {"@currency": "USD", "#text": "19.99"}}. If the element had no attributes, the same tag would have simplified to a plain string value instead.
What happens to an empty element like <note/> or <note></note>?
Per the XML 1.0 spec, a self-closing tag and an explicitly-closed empty tag are equivalent — there's no way to distinguish them once parsed, so both convert identically. With no attributes and no text or child content, there's nothing to populate the JSON value with, so this typically comes through as an empty string or null rather than an empty object, since there are no attribute or child keys to place inside one.
Are XML comments and processing instructions kept in the JSON output?
No. JSON's grammar (RFC 8259 / ECMA-404) has no comment syntax and no node type analogous to a processing instruction (<?xml-stylesheet type="text/xsl" href="style.xsl"?>), so both are stripped during conversion. Only element structure, attributes, and character data survive the conversion; anything that isn't data in the XML infoset sense is discarded.
Why might converting XML to JSON and back produce a file with different whitespace or attribute order than the original?
Two separate spec gaps compound here. First, XML often contains whitespace-only text nodes between elements purely for pretty-printing indentation, which can surface as stray #text entries unless explicitly stripped. Second, the JSON grammar (ECMA-404) never mandates that object members preserve insertion order — most parsers do in practice, but it isn't a spec guarantee — so attribute order captured as @keys isn't reliably round-trippable either.
अगर मैं <id>007</id> को JSON में कन्वर्ट करूं, तो क्या वैल्यू नंबर 7 बन जाएगी या "007" स्ट्रिंग के रूप में ही रहेगी?
यह किसी खास टूल की गड़बड़ी नहीं, बल्कि एक अंतर्निहित अस्पष्टता (ambiguity) है। XML में कोई नेटिव न्यूमेरिक या बूलियन टाइप नहीं होता — XML 1.0 स्पेक के अनुसार, हर एलिमेंट की सामग्री character data ही होती है — इसलिए XML-से-JSON कन्वर्जन को हमेशा यह तय करना पड़ता है कि टेक्स्ट को JSON number/boolean बनाया जाए या string ही रहने दिया जाए। यह निर्णय "007" (जो एक ज़िप कोड या प्रोडक्ट कोड हो सकता है, नंबर 7 नहीं) या "1.50" (एक कीमत, जिसे नंबर में बदलने पर आखिरी शून्य चुपचाप 1.5 हो जाता है) जैसी वैल्यू के लिए वाकई जोखिमभरा है। सुरक्षित डिफ़ॉल्ट, जिसे ज़्यादातर कन्वर्जन अपनाते हैं, यह है कि सभी एलिमेंट और attribute वैल्यू को JSON strings ही रहने दिया जाए और यह तय करना उपभोग करने वाले कोड पर छोड़ दिया जाए कि कब और कैसे कास्ट किया जाए — इस तरह कोई भी जानकारी चुपचाप नष्ट नहीं होती।
डेवलपर्स XML API रिस्पॉन्स को JSON में क्यों कन्वर्ट करते हैं, बजाय इसके कि JavaScript में सीधे XML पार्स करें?
ब्राउज़र और Node.js में XML के लिए JSON.parse जैसा कोई बिल्ट-इन समकक्ष नहीं है — आपको DOMParser (सिर्फ ब्राउज़र में) या किसी XML लाइब्रेरी (Node में) की ज़रूरत पड़ेगी, फिर getElementsByTagName या XPath के ज़रिए DOM ट्री से वैल्यू निकालने के लिए ट्रैवर्सल कोड खुद लिखना होगा। इसके उलट, JSON.parse एक सिंगल बिल्ट-इन कॉल है जो आपको सीधे plain objects और arrays दे देता है जिन्हें आप तुरंत destructure कर सकते हैं। यही अंतर वजह है कि लीगेसी SOAP APIs, RSS/Atom फीड्स, और sitemap.xml फ़ाइलें अक्सर JavaScript कोडबेस के छोर पर JSON में कन्वर्ट कर दी जाती हैं: बात यह नहीं कि JSON ज़्यादा शक्तिशाली है, बल्कि यह कि उसे उपभोग करने के लिए JS टूलिंग पहले से मौजूद है।
XML और JSON में पहले कौन आया, और यह इतिहास उनके डिज़ाइन के अंतर को कैसे समझाता है?
XML, JSON से करीब एक दशक पहले आया था: XML 1.0 फरवरी 1998 में W3C Recommendation बना, जो SGML से व्युत्पन्न था और एक डॉक्यूमेंट मार्कअप भाषा के रूप में डिज़ाइन किया गया था (इसीलिए इसमें attributes, mixed content, और namespaces हैं)। JSON को Douglas Crockford ने 2000 के दशक की शुरुआत में JavaScript के object-literal सिंटैक्स से निकाला, जिसे पहली बार 2006 में RFC 4627 के रूप में औपचारिक रूप दिया गया, फिर ECMA-404 (2013) और अपने वर्तमान रूप, RFC 8259 (2017) के रूप में फिर से स्पेसिफाई किया गया। JSON की सादगी — चार डेटा टाइप, कोई attribute नहीं, कोई mixed content नहीं — इस बात को दर्शाती है कि यह किसी चल रहे प्रोग्राम को डेटा स्ट्रक्चर भेजने-प्राप्त करने के लिए एक वायर फॉर्मेट के रूप में बना था, न कि दस्तावेज़ों को मार्कअप करने के लिए।
क्या यह सच है कि JSON मूल रूप से हल्के सिंटैक्स वाला XML ही है?
नहीं — और attributes के लिए यह टूल जिस @-प्रीफिक्स कन्वेंशन का उपयोग करता है, वह खुद इस अंतर का सबूत है। यह कन्वेंशन (attributes के लिए @key, mixed content के लिए #text) JSON स्पेसिफिकेशन का हिस्सा नहीं है; यह एक व्यापक रूप से इस्तेमाल किया जाने वाला लेकिन अनौपचारिक कन्वेंशन है, और अलग-अलग XML-से-JSON टूल एक ही इनपुट को अलग-अलग तरीके से हैंडल करते हैं — कुछ attributes को plain keys में फ़्लैट कर देते हैं, कुछ एलिमेंट कंटेंट को $ या _text key में लपेट देते हैं, कुछ BadgerFish या Parker कन्वेंशन इस्तेमाल करते हैं। JSON में attribute जैसी कोई बिल्ट-इन अवधारणा है ही नहीं, इसलिए हर XML-से-JSON टूल plain JSON objects के ऊपर अपना खुद का कन्वेंशन थोप रहा होता है, और एक कन्वर्टर का JSON आउटपुट उसी XML इनपुट के लिए दूसरे कन्वर्टर के आउटपुट से मेल नहीं खाएगा।
अगर अलग-अलग XML namespaces के दो एलिमेंट्स का नाम संयोग से एक जैसा हो, जैसे <a:id> और <b:id>, तो क्या होता है?
चूंकि यह कन्वर्टर namespace प्रीफिक्स को उनके पूरे namespace URI में रिज़ॉल्व करने के बजाय शाब्दिक रूप से key के नाम के हिस्से के तौर पर सुरक्षित रखता है, इसलिए "a:id" और "b:id" दो अलग JSON keys में कन्वर्ट होते हैं और आपस में टकराते नहीं — लेकिन यह तभी तक सही रहता है जब तक प्रीफिक्स खुद अलग-अलग हों। अगर किसी डॉक्यूमेंट के दो अलग हिस्सों में संयोग से एक ही प्रीफिक्स अलग-अलग namespace URIs के लिए इस्तेमाल हो (जो XML में कानूनी है, क्योंकि प्रीफिक्स बाइंडिंग उस एलिमेंट तक सीमित होती है जिस पर वह घोषित की गई है), या अगर कोई डाउनस्ट्रीम टूल namespace संदर्भ के बिना JSON को दोबारा पार्स करे, तो वह प्रीफिक्स-आधारित key यह भरोसेमंद ढंग से नहीं बता पाती कि वह एलिमेंट असल में किस namespace का था। जिन दस्तावेज़ों में प्रीफिक्स से ज़्यादा namespace URIs मायने रखते हैं, वहां कन्वर्जन से पहले प्रीफिक्स को नॉर्मलाइज़ करना ज़्यादा सुरक्षित है।
Embed This Tool
Add a free, live version of this widget to your own website or blog post — it runs entirely in your visitors' browsers, with a credit link back to The Toolbox.
<iframe src="https://getthetoolbox.com/embed/xml-to-json" title="XML to JSON Converter — The Toolbox" width="100%" height="420" style="max-width:480px;border:1px solid #e2e8f0;border-radius:12px" loading="lazy"></iframe>
<p style="font-size:12px;margin:4px 0 0"><a href="https://getthetoolbox.com/converter-tools/xml-to-json?utm_source=embed&utm_medium=widget" target="_blank" rel="noopener">Free XML to JSON Converter</a> by The Toolbox</p>संबंधित टूल
मुफ़्त ऑनलाइन लंबाई कनवर्टर
मीटर, फ़ुट, इंच, मील और अन्य लंबाई इकाइयों के बीच रूपांतरण करें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में, बिना साइन-अप के।
मुफ़्त ऑनलाइन वज़न कनवर्टर
kg, पाउंड, औंस, ग्राम और अन्य वज़न इकाइयों के बीच रूपांतरण करें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में, बिना साइन-अप के।
मुफ़्त तापमान कनवर्टर
Celsius, Fahrenheit और Kelvin पैमानों के बीच तापमान को तुरंत बदलें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में, बिना साइन-अप के।
मुफ़्त ऑनलाइन क्षेत्रफल कनवर्टर
वर्ग मीटर, एकड़, हेक्टेयर और अन्य के बीच रूपांतरण करें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में, बिना साइन-अप के।
XML to JSON Converter के बारे में
XML (W3C की Extensible Markup Language, जो पहली बार 1998 में प्रकाशित हुई थी और अभी 1.0 स्पेक के 5वें संस्करण पर है) और JSON (जिसे ECMA-404 और RFC 8259 के रूप में औपचारिक रूप दिया गया है) — दोनों एक ही समस्या हल करते हैं, यानी संरचित, पदानुक्रमित (hierarchical) डेटा का आदान-प्रदान — लेकिन दोनों के डेटा मॉडल असल में अलग हैं। XML मूल रूप से एक दस्तावेज़ (document) फॉर्मेट है: इसमें हर नोड एक एलिमेंट होता है जो attributes, क्रमबद्ध चाइल्ड एलिमेंट्स, और फ्री टेक्स्ट को एक साथ रख सकता है। JSON एक डेटा फॉर्मेट है जो केवल चार संरचनाओं से बना है — object, array, string/number/boolean, और null — इसमें attribute जैसी कोई अवधारणा नहीं है, न ही टेक्स्ट का चाइल्ड नोड्स के साथ मिश्रित होना संभव है। दोनों के बीच कन्वर्ट करने का मतलब है एक मॉडल को दूसरे पर मैप करना, और XML की कुछ विशेषताओं का JSON में कोई सीधा समकक्ष (equivalent) होता ही नहीं।
Attributes. XML attributes एलिमेंट के ओपनिंग टैग में होते हैं: <person id="1" active="true">। चूंकि JSON objects में attribute की कोई अवधारणा नहीं है, यह टूल हर attribute को उसी लेवल पर @ प्रीफिक्स वाली key में मैप करता है:
<person id="1"><name>Ada Lovelace</name></person>
{ "person": { "@id": "1", "name": "Ada Lovelace" } }
बार-बार आने वाले बनाम एकल एलिमेंट्स। यह XML-से-JSON की क्लासिक अस्पष्टता (ambiguity) है। अगर किसी <skills> एलिमेंट में तीन <skill> चाइल्ड हैं, तो वे एक JSON array बन जाते हैं ("skill": ["Math", "Programming", "History"])। लेकिन अगर उसमें सिर्फ एक ही <skill> है, तो कन्वर्टर के पास सलाह लेने के लिए कोई स्कीमा नहीं होता और वह यह नहीं जान सकता कि वह एलिमेंट स्वाभाविक रूप से एकवचन (singular) है या फिलहाल संयोग से सिर्फ एक बार आया है — इसलिए वह एक-आइटम वाले array के बजाय सीधा string/object आउटपुट देता है। इसका मतलब है कि JSON आउटपुट का आकार (shape) इस बात पर निर्भर करके बदल सकता है कि किसी दिए गए डॉक्यूमेंट में सिबलिंग टैग कितनी बार आया है — यह बात तब मायने रखती है जब आप कन्वर्ट किए गए आउटपुट पर कोड लिख रहे हों और एक जैसी array टाइप की उम्मीद कर रहे हों।
मिश्रित सामग्री (Mixed content)। XML में एक ही पैरेंट के भीतर टेक्स्ट और एलिमेंट्स को आपस में मिलाने की अनुमति होती है — जैसे <p>Hello <b>world</b>!</p> — जिसे JSON objects सीधे तौर पर दर्शा नहीं सकते, क्योंकि object की वैल्यू या तो एक सिंगल string होती है या एक नेस्टेड structure, न कि टेक्स्ट और structure का क्रमबद्ध मिश्रण। यह टूल टेक्स्ट वाले हिस्सों को चाइल्ड-एलिमेंट keys के साथ-साथ एक #text key में मैप करता है। यह एक उचित सन्निकटन (approximation) है, लेकिन इसमें जानकारी खो जाती है (lossy): JSON के key/value जोड़े object मॉडल के हिसाब से अनऑर्डर्ड होते हैं, इसलिए चाइल्ड एलिमेंट्स के सापेक्ष टेक्स्ट की मिश्रण की स्थिति (text <b> से पहले है या बाद में) पूरी तरह सुरक्षित नहीं रहती — आपको टुकड़े मिलते हैं, उनकी मूल बुनावट (weave) नहीं।
जो साफ-साफ मैप नहीं होता। XML namespaces (xmlns:soap="...") और processing instructions (<?xml-stylesheet ...?>) का इस कन्वर्टर द्वारा मॉडल किया गया कोई नेटिव JSON प्रतिनिधित्व नहीं है। Namespace-प्रीफिक्स वाले टैग शाब्दिक keys के रूप में आते हैं (जैसे, "soap:Envelope"), लेकिन प्रीफिक्स-से-URI की बाइंडिंग अलग से ट्रैक नहीं होती, और processing instructions पूरी तरह हटा दी जाती हैं, क्योंकि JSON में इसके बराबर कोई नोड टाइप नहीं है। XML के DOCTYPE/DTD डिक्लेरेशन और entity references (&,  ) भी इसी तरह रिज़ॉल्व करके हटा दिए जाते हैं — आपको resolved character data मिलता है, मूल मार्कअप नहीं।
डेवलपर्स इस कन्वर्जन का सहारा सबसे ज़्यादा तब लेते हैं जब वे JavaScript फ्रंट एंड से लीगेसी SOAP/XML APIs का उपयोग कर रहे होते हैं, XML कॉन्फ़िग फॉर्मेट को JSON-आधारित टूलिंग में माइग्रेट कर रहे होते हैं, या XML फीड्स (RSS, sitemaps, SAML responses) को JSON-नेटिव पाइपलाइन के लिए नॉर्मलाइज़ कर रहे होते हैं। चूंकि ऊपर बताई गई attribute-बनाम-array अस्पष्टताओं की वजह से राउंड-ट्रिपिंग हमेशा lossless नहीं होती, इसे केवल उपभोग (consumption) के लिए एक-तरफ़ा ट्रांसफ़ॉर्म मानें — यह इस बात की गारंटी नहीं है कि वापस XML में कन्वर्ट करने पर मूल डेटा बाइट-फॉर-बाइट दोबारा बन जाएगा।