← Back to JavaScript Course | Chapter 9: Async & Web APIs | Lesson 26 of 26

JS JSON बनाम XML

JSON के dominant data-interchange format बनने से पहले, web पर structured data के लिए XML standard विकल्प था -- दोनों के बीच practical फर्क समझना, और यह कि ज़्यादातर modern web APIs के लिए JSON ने काफी हद तक जीत क्यों हासिल की, current conventions और यह दोनों समझने में मदद करता है कि कुछ पुराने या खास systems अभी भी XML क्यों इस्तेमाल करते हैं।

दोनों Formats में एक ही Data की तुलना

एक जैसा structured data हर format में काफी अलग दिखता है -- JSON का syntax (curly braces, colons, square brackets) सीधे JavaScript object और array literals जैसा ही है, जबकि XML का tag-based syntax ज़्यादा HTML जैसा है, जिसमें हर data के टुकड़े को लपेटते opening और closing tags होते हैं।

Note: गौर करें कि JSON की structure JavaScript के अपने object/array syntax पर लगभग एक-से-एक कैसे mapped होती है, यही एक बड़ी वजह है कि यह JavaScript code में इतनी स्वाभाविक रूप से integrate होता है।
Warning: एक गहराई से nested XML document हर level पर दोहराए गए opening और closing tags की वजह से बराबर के JSON से visually scan करना मुश्किल हो सकता है।

उदाहरण: Comparing the Same Data in Both Formats

javascript
// Declare the constant `json`, set to `{ name: "Sam", age: 30 }`
// Declare the constant `json`, set to `{ name: "Sam", age: 30 }`
const json = { name: "Sam", age: 30 };
// Declare the constant `xml`, set to "<person><name>Sam</name><age>30</age></person>"
// Declare the constant `xml`, set to "<person><name>Sam</name><age>30</age></person>"
const xml = "<person><name>Sam</name><age>30</age></person>";
// Print `JSON.stringify(json)` to the console
// Print `JSON.stringify(json)` to the console
console.log(JSON.stringify(json));
// Print `xml` to the console
// Print `xml` to the console
console.log(xml);

Parsing Complexity: JSON बनाम XML

JSON.parse() एक JSON string को एक built-in call में सीधे एक usable JavaScript value में बदल देता है, जबकि XML parse करने के लिए DOMParser चाहिए और फिर querySelector() जैसे DOM methods से resulting document में navigate करना पड़ता है -- 'data को usable form में लाने' के एक ही बुनियादी मकसद के लिए काफी ज़्यादा steps।

Note: बिना किसी मौजूदा XML dependency वाले बिल्कुल नए project के लिए, ज़्यादा सरल JSON parsing path JSON को default बनाने की एक मजबूत वजह है।
Warning: किसी गहराई से nested XML structure को पढ़ने के लिए किसी parsed JSON object पर सीधे nested properties access करने के मुकाबले कई DOM navigation calls को chain करना पड़ता है।

उदाहरण: Parsing Complexity: JSON vs XML

javascript
const obj = JSON.parse('{"name": "Sam"}');
console.log(obj.name); // one call

const doc = new DOMParser().parseFromString("<name>Sam</name>", "text/xml");
console.log(doc.querySelector("name").textContent); // several steps

वे Features जो JSON में नहीं पर XML में हैं

XML attributes (किसी tag पर अतिरिक्त metadata, जैसे <book id="42">), namespaces (vocabularies मिलाते समय naming conflicts से बचना), comments, और mixed content (child elements के बीच बिखरा हुआ text) support करता है -- इनमें से किसी का भी JSON में कोई native, direct equivalent नहीं है।

Note: जब किसी data format को content के साथ सच में rich metadata चाहिए (जैसे inline formatting वाला document markup), तो XML का feature set इसे JSON में जबरदस्ती फिट करने से एक बेहतर structural fit हो सकता है।
Warning: XML जो चीज़ स्वाभाविक रूप से express करता है (जैसे mixed text-and-markup content) उसे JSON में represent करने के लिए आमतौर पर एक अजीब workaround चाहिए, क्योंकि JSON में इसके सीधे बराबर कोई concept नहीं है।

उदाहरण: Features JSON Lacks That XML Has

javascript
const doc = new DOMParser().parseFromString('<book id="42">Title</book>', "text/xml");
console.log(doc.querySelector("book").getAttribute("id")); // no JSON equivalent

JSON Web APIs के लिए Default क्यों बना

JavaScript के साथ JSON का tight fit (किसी अलग parsing library की ज़रूरत नहीं), इसका ज़्यादा compact size (XML के opening/closing tags से कम दोहराया गया markup), और typical API data के बहुत बड़े हिस्से के लिए इसकी सरलता (attributes या namespaces की ज़रूरत के बिना nested objects और arrays), ये मुख्य वजहें हैं कि इसने ज़्यादातर नए web APIs के लिए default विकल्प के रूप में XML को पीछे छोड़ दिया।

Note: आप जो भी नया API design करें उसके लिए JSON को default बनाएं, XML को खासतौर पर किसी मौजूदा system के साथ integration के लिए रखें जिसे पहले से इसकी ज़रूरत है।
Warning: JSON की सरलता एक सीमा भी है -- rich structural needs वाले सच में जटिल, document-जैसे data के लिए, वही सरलता एक असली constraint बन सकती है जो XML में नहीं होती।

उदाहरण: Why JSON Became the Default for Web APIs

javascript
console.log(JSON.stringify({ name: "Sam" }).length);
console.log("<person><name>Sam</name></person>".length);

XML अभी भी कब सही विकल्प है

XML document-centric formats (जैसे RSS feeds, SVG, या Office document formats) के लिए, formal schema validation (XSD) चाहने वाले systems के लिए, और मौजूदा enterprise या SOAP-based systems के साथ integration के लिए सच में उपयुक्त बना हुआ है जो JSON के आम होने से बहुत पहले इसके इर्द-गिर्द बनाए गए थे।

Note: किसी मौजूदा system के साथ integrate करते समय जो पहले से XML इस्तेमाल करता है (जैसे कोई established enterprise API या एक legacy feed format), एक अनावश्यक conversion layer जबरदस्ती लगाने के बजाय सीधे XML के साथ काम करें।
Warning: किसी well-established, काम कर रहे XML-based integration को सिर्फ एक "ज़्यादा modern" format इस्तेमाल करने के लिए JSON में बदलना, जब असली requirements में इसकी कोई ज़रूरत ही न हो, अक्सर अनावश्यक अतिरिक्त काम होता है।

उदाहरण: When XML Is Still the Right Choice

javascript
const doc = new DOMParser().parseFromString("<rss><item>News</item></rss>", "text/xml");
console.log(doc.querySelector("item").textContent);
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह मान लेना कि XML सिर्फ worse या obsolete है -- यह कुछ specific use cases के लिए असल में अभी भी अच्छी तरह उपयुक्त है, जैसे rich structural markup वाले documents (HTML जैसे) या strict, formal schema validation needs वाले systems।
  2. JSON से unfamiliarity की वजह से किसी बिल्कुल नए project के लिए XML चुनना, जबकि JSON आज लगभग हमेशा simpler, ज़्यादा appropriate default choice है।
  3. यह भूल जाना कि JSON और XML के बीच convert करना हमेशा एक साफ one-to-one mapping नहीं होता, क्योंकि XML कुछ concepts (जैसे attributes बनाम elements) support करता है जिनका JSON में कोई direct equivalent नहीं है।
चैप्टर सारांश
  • JSON आमतौर पर ज़्यादा compact है, native JavaScript objects/arrays पर सीधे map करता है, और किसी अलग parsing library की ज़रूरत नहीं होती।
  • XML richer structural features (attributes, namespaces, mixed content) support करता है और उसकी mature schema validation tooling (XSD, DTD) है।
  • ज़्यादातर modern web APIs डिफ़ॉल्ट रूप से JSON इस्तेमाल करते हैं; XML enterprise systems, SOAP-based APIs, और document-centric formats जैसे specific domains में आम है।
ब्राउज़र सपोर्ट

JSON.parse()/stringify() और DOMParser (XML के लिए) दोनों हर modern browser में natively supported हैं, इसलिए किसी भी format के साथ काम करने के लिए किसी external library की ज़रूरत नहीं।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.