XML to JSON

XML को JSON फ़ॉर्मेट में बदलें

उदाहरण देखें

XML इनपुट

JSON आउटपुट

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
JSON यहाँ दिखाई देगा…

XML से JSON रूपांतरण क्या है?

XML से JSON रूपांतरण वह प्रक्रिया है जिसमें डेटा को Extensible Markup Language (XML) से JavaScript Object Notation (JSON) में बदला जाता है। दोनों फ़ॉर्मेट संरचित, पदानुक्रमिक डेटा को दर्शाते हैं, लेकिन उनकी सिंटैक्स और डेटा मॉडल अलग-अलग हैं। XML आरंभिक और समापन टैगों के साथ वैकल्पिक विशेषताओं का उपयोग करता है, जबकि JSON key-value pairs, arrays और primitive types का उपयोग करता है। XML से JSON में रूपांतरण करने से आप उन वातावरणों में XML डेटा के साथ कार्य कर सकते हैं जहाँ JSON मूल फ़ॉर्मेट है, जैसे JavaScript रनटाइम, REST API और NoSQL डेटाबेस।

यह रूपांतरण हमेशा एक-से-एक नहीं होता। XML में ऐसी संरचनाएं हैं जिनका JSON में कोई सीधा समतुल्य नहीं है: विशेषताएं, मिश्रित सामग्री (पाठ और चाइल्ड एलिमेंट का मिश्रण), प्रोसेसिंग निर्देश, टिप्पणियाँ, CDATA अनुभाग और नेमस्पेस घोषणाएं। विभिन्न रूपांतरण लाइब्रेरी इन संरचनाओं को अलग-अलग तरीके से संभालती हैं, इसीलिए अनेक परंपराएं प्रचलित हैं। सबसे सामान्य तरीका विशेषता नामों के आगे @ उपसर्ग लगाता है और जब किसी एलिमेंट पर विशेषताएं भी मौजूद हों तो पाठ सामग्री को #text फ़ील्ड में रखता है।

XML से JSON रूपांतरण एक सामान्य चरण है जब SOAP से REST की ओर माइग्रेशन हो, पुराने एंटरप्राइज़ API का उपयोग हो, या सरकारी और वित्तीय डेटा फ़ीड संसाधित करने हों जो XML अनिवार्य करते हैं। उत्पादकों और उपभोक्ताओं को एक साथ फिर से लिखने के बजाय, टीमें सीमा परत पर XML पेलोड को रूपांतरित करती हैं और JSON को आगे भेजती हैं। AWS API Gateway, Apache Camel और MuleSoft इस पैटर्न को स्वाभाविक रूप से समर्थन करते हैं।

XML input
<bookstore>
  <book category="fiction">
    <title lang="en">The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
    <price>10.99</price>
  </book>
  <book category="non-fiction">
    <title lang="en">Sapiens</title>
    <author>Yuval Noah Harari</author>
    <year>2011</year>
    <price>14.99</price>
  </book>
</bookstore>
JSON output
{
  "bookstore": {
    "book": [
      {
        "@category": "fiction",
        "title": {
          "@lang": "en",
          "#text": "The Great Gatsby"
        },
        "author": "F. Scott Fitzgerald",
        "year": "1925",
        "price": "10.99"
      },
      {
        "@category": "non-fiction",
        "title": {
          "@lang": "en",
          "#text": "Sapiens"
        },
        "author": "Yuval Noah Harari",
        "year": "2011",
        "price": "14.99"
      }
    ]
  }
}

ऑनलाइन XML से JSON कनवर्टर क्यों उपयोग करें?

एकबारगी रूपांतरण स्क्रिप्ट लिखने में समय लगता है, विशेष रूप से जब XML में विशेषताएं, नेमस्पेस, या बार-बार आने वाले एलिमेंट हों जिन्हें JSON ऐरे बनने की आवश्यकता हो। ब्राउज़र-आधारित कनवर्टर कुछ ही सेकंड में JSON आउटपुट देता है ताकि आप संरचना की जाँच करके आगे बढ़ सकें।

तत्काल रूपांतरण
XML चिपकाएं और तुरंत JSON आउटपुट पाएं। कोई लाइब्रेरी इंस्टॉल करने, स्क्रिप्ट लिखने या बिल्ड टूल कॉन्फ़िगर करने की आवश्यकता नहीं।
🔒
गोपनीयता-प्रथम प्रोसेसिंग
संपूर्ण रूपांतरण आपके ब्राउज़र में JavaScript का उपयोग करके होता है। आपका XML डेटा कभी भी आपके कंप्यूटर से बाहर नहीं जाता और किसी भी सर्वर पर अपलोड नहीं होता।
🔀
विशेषताएं और ऐरे संभालता है
विशेषताओं को @-उपसर्ग कुंजियों पर मैप किया जाता है। बार-बार आने वाले sibling elements स्वचालित रूप से JSON ऐरे में समूहीकृत हो जाते हैं, Parker या BadgerFish परंपरा का पालन करते हुए।
📋
कोई खाता आवश्यक नहीं
पृष्ठ खोलें, XML चिपकाएं, और JSON परिणाम की प्रतिलिपि लें। कोई पंजीकरण नहीं, कोई API कुंजी नहीं, कोई उपयोग सीमा नहीं।

XML से JSON के उपयोग के मामले

फ्रंटएंड विकास
XML API प्रतिक्रियाओं को JSON में बदलें ताकि आप React, Vue, या Angular घटकों में डेटा प्रस्तुत कर सकें — अपने क्लाइंट बंडल में XML पार्सिंग लाइब्रेरी जोड़े बिना।
बैकएंड इंजीनियरिंग
SOAP पेलोड, RSS/Atom फ़ीड, या XML-RPC प्रतिक्रियाओं को API गेटवे परत पर JSON में बदलें — माइक्रोसर्विसेज़ को डेटा भेजने से पहले जो JSON इनपुट की अपेक्षा करती हैं।
DevOps और CI/CD
XML परीक्षण रिपोर्टों (JUnit, NUnit, xUnit) को डैशबोर्ड, Slack बॉट, या कस्टम CI अधिसूचना पाइपलाइन में ingest करने के लिए JSON में बदलें।
QA और परीक्षण
रूपांतरित JSON स्नैपशॉट की अपेक्षित आउटपुट से तुलना करें ताकि यह सत्यापित हो सके कि XML उत्पन्न करने वाली सेवा ने विभिन्न रिलीज़ के बीच अपनी प्रतिक्रिया संरचना नहीं बदली।
डेटा इंजीनियरिंग
सरकारी पोर्टलों, वित्तीय फ़ीड (FIX, FIXML), या स्वास्थ्य सेवा प्रणालियों (HL7 CDA) से XML निर्यात को BigQuery, Snowflake, या Elasticsearch में लोड करने के लिए JSON में बदलें।
डेटा फ़ॉर्मेट सीखना
डेटा इंटरचेंज का अध्ययन करने वाले विद्यार्थी XML नमूने कनवर्टर में चिपका सकते हैं ताकि देख सकें कि एलिमेंट, विशेषताएं और नेस्टिंग JSON कुंजियों, ऑब्जेक्ट और ऐरे पर कैसे मैप होती हैं।

XML से JSON मैपिंग संदर्भ

XML और JSON के डेटा मॉडल अलग हैं। नीचे दी गई तालिका दर्शाती है कि प्रत्येक XML संरचना सबसे सामान्य परंपरा (विशेषताओं के लिए @, विशेषताओं के साथ पाठ के लिए #text) में अपने JSON समतुल्य पर कैसे मैप होती है। कुछ संरचनाओं, जैसे मिश्रित सामग्री और टिप्पणियों का, कोई मानक JSON प्रतिनिधित्व नहीं है।

XML संरचनाXML उदाहरणJSON समतुल्य
Element<name>text</name>"name": "text"
Nested elements<a><b>1</b></a>"a": { "b": "1" }
Attributes<el attr="v"/>"el": { "@attr": "v" }
Text + attributes<el a="1">text</el>"el": { "@a": "1", "#text": "text" }
Repeated elements<r><i>1</i><i>2</i></r>"r": { "i": ["1", "2"] }
Mixed content<p>A <b>B</b> C</p>Varies by convention
CDATA<![CDATA[raw]]>"#cdata": "raw" or flattened
Namespacesxmlns:prefix="uri"Prefix preserved or stripped
Empty element<el/>"el": null or ""
Comments<!-- note -->Discarded (no JSON equivalent)

XML से JSON परंपराओं की तुलना

XML को JSON पर मैप करने का कोई एकल मानक नहीं है। तीन परंपराएं व्यापक रूप से उपयोग की जाती हैं, जिनमें से प्रत्येक की विशेषता संचालन, ऐरे पहचान और पाठ संरक्षण के लिए अलग-अलग विशेषताएं हैं।

BadgerFish
प्रत्येक पाठ नोड $ कुंजी में जाता है। विशेषताओं को @-उपसर्ग कुंजियाँ मिलती हैं। नेमस्पेस @xmlns प्रविष्टियों के रूप में सुरक्षित रहते हैं। विस्तृत लेकिन बिना हानि के: आप डेटा खोए बिना वापस XML पर जा सकते हैं।
Parker
विशेषताओं को पूरी तरह हटा देता है और केवल पाठ वाले एलिमेंट को सरल मानों में बदलता है। बार-बार आने वाले एलिमेंट ऐरे बन जाते हैं। संक्षिप्त और स्वच्छ, लेकिन lossy: विशेषताएं और नेमस्पेस जानकारी हटा दी जाती है।
GData (Google Data)
पाठ सामग्री के लिए $t का उपयोग करता है और विशेषताओं को बिना किसी उपसर्ग के शीर्ष-स्तरीय कुंजियों के रूप में सुरक्षित रखता है। BadgerFish की विस्तृतता और Parker की सरलता के बीच एक मध्यम मार्ग। ऐतिहासिक रूप से Google API में उपयोग किया गया।

कोड उदाहरण

नीचे JavaScript, Python, Go और कमांड लाइन में XML को JSON में बदलने के कार्यशील उदाहरण दिए गए हैं। प्रत्येक उदाहरण नेस्टेड एलिमेंट और बार-बार आने वाले sibling tags संभालता है।

JavaScript (browser)
// Using the DOMParser API to walk XML and build a JSON object
function xmlToJson(xml) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xml, 'application/xml')

  function nodeToObj(node) {
    const obj = {}
    // Handle attributes
    if (node.attributes) {
      for (const attr of node.attributes) {
        obj['@' + attr.name] = attr.value
      }
    }
    // Handle child nodes
    for (const child of node.childNodes) {
      if (child.nodeType === 3) { // text
        const text = child.textContent.trim()
        if (text) obj['#text'] = text
      } else if (child.nodeType === 1) { // element
        const key = child.nodeName
        const val = nodeToObj(child)
        if (obj[key]) {
          if (!Array.isArray(obj[key])) obj[key] = [obj[key]]
          obj[key].push(val)
        } else {
          obj[key] = val
        }
      }
    }
    // Simplify text-only nodes
    const keys = Object.keys(obj)
    if (keys.length === 1 && keys[0] === '#text') return obj['#text']
    return obj
  }

  return nodeToObj(doc.documentElement)
}

const xml = '<user><name>Alice</name><role>admin</role></user>'
console.log(JSON.stringify(xmlToJson(xml), null, 2))
// → { "name": "Alice", "role": "admin" }
Python
import xmltodict
import json

xml = """
<user>
  <name>Alice</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
</user>
"""

# xmltodict converts XML to an OrderedDict
result = xmltodict.parse(xml)
print(json.dumps(result, indent=2))
# → {
# →   "user": {
# →     "name": "Alice",
# →     "roles": { "role": ["admin", "editor"] }
# →   }
# → }

# With the standard library (xml.etree.ElementTree)
import xml.etree.ElementTree as ET

def etree_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"@{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        child_data = etree_to_dict(child)
        if child.tag in d:
            if not isinstance(d[child.tag], list):
                d[child.tag] = [d[child.tag]]
            d[child.tag].append(child_data)
        else:
            d[child.tag] = child_data
    if elem.text and elem.text.strip():
        if d:
            d["#text"] = elem.text.strip()
        else:
            return elem.text.strip()
    return d

root = ET.fromstring(xml)
print(json.dumps(etree_to_dict(root), indent=2))
Go
package main

import (
    "encoding/json"
    "encoding/xml"
    "fmt"
    "strings"
)

// For simple, known schemas — define a struct
type User struct {
    XMLName xml.Name `xml:"user"`
    Name    string   `xml:"name"`
    Roles   []string `xml:"roles>role"`
}

func main() {
    data := `<user><name>Alice</name><roles><role>admin</role><role>editor</role></roles></user>`
    var user User
    xml.NewDecoder(strings.NewReader(data)).Decode(&user)

    out, _ := json.MarshalIndent(user, "", "  ")
    fmt.Println(string(out))
    // → { "Name": "Alice", "Roles": ["admin", "editor"] }
}
CLI (xmllint + jq / yq)
# Using xq (part of yq, a jq wrapper for XML)
# Install: pip install yq  OR  brew install yq
echo '<user><name>Alice</name></user>' | xq .
# → { "user": { "name": "Alice" } }

# Using xmlstarlet + jq
xmlstarlet sel -t -v '//name' input.xml | jq -R '{ name: . }'

# Node.js one-liner with xml2js
echo '<a><b>1</b></a>' | node -e "
  const {parseString} = require('xml2js');
  let d=''; process.stdin.on('data',c=>d+=c);
  process.stdin.on('end',()=>parseString(d,(e,r)=>console.log(JSON.stringify(r,null,2))))
"

अक्सर पूछे जाने वाले प्रश्न

क्या XML से JSON रूपांतरण बिना हानि के होता है?
हमेशा नहीं। XML विशेषताओं, टिप्पणियों, प्रोसेसिंग निर्देशों और नेमस्पेस घोषणाओं का JSON में कोई सीधा समतुल्य नहीं है। अधिकांश कनवर्टर @ उपसर्ग परंपरा का उपयोग करके विशेषताओं को सुरक्षित रखते हैं, लेकिन टिप्पणियाँ और प्रोसेसिंग निर्देश हटा दिए जाते हैं। यदि आपको पूरी तरह उलटा जाने योग्य रूपांतरण चाहिए, तो BadgerFish जैसी बिना हानि वाली परंपरा उपयोग करें।
JSON में XML विशेषताएं कैसे दर्शाई जाती हैं?
सबसे सामान्य तरीका विशेषता नामों के आगे @ लगाना है। उदाहरण के लिए, <book id="1"> का रूपांतरण {"@id": "1"} होता है। कुछ कनवर्टर इसके बजाय एक नेस्टेड "_attributes" ऑब्जेक्ट का उपयोग करते हैं। विशिष्ट परंपरा उपयोग की गई लाइब्रेरी पर निर्भर करती है।
कनवर्टर बार-बार आने वाले XML एलिमेंट को कैसे संभालता है?
जब कोई एलिमेंट एक ही मूल के अंतर्गत एक से अधिक बार आता है, तो कनवर्टर उन्हें JSON ऐरे में समूहीकृत करता है। उदाहरण के लिए, दो item sibling elements {"item": ["a", "b"]} बन जाते हैं। एकल item एलिमेंट एक सरल स्ट्रिंग मान के रूप में रहता है जब तक force-array मोड सक्षम न हो।
क्या मैं JSON को वापस XML में बदल सकता हूँ?
हाँ, लेकिन परिणाम मूल रूपांतरण में उपयोग की गई परंपरा पर निर्भर करता है। यदि विशेषताएं @ उपसर्ग के साथ सुरक्षित थीं, तो JSON से XML कनवर्टर उन्हें पुनर्निर्मित कर सकता है। यदि मूल रूपांतरण में Parker परंपरा (जो विशेषताएं हटाती है) उपयोग हुई, तो वह जानकारी नष्ट हो गई है। ToolDeck में विपरीत दिशा के लिए JSON to XML उपकरण भी उपलब्ध है।
रूपांतरण के दौरान XML नेमस्पेस का क्या होता है?
नेमस्पेस संचालन लाइब्रेरी के अनुसार भिन्न होता है। कुछ कनवर्टर कुंजी नाम में उपसर्ग सुरक्षित रखते हैं (जैसे "ns:element"), अन्य xmlns घोषणाओं को अलग फ़ील्ड में मैप करते हैं, और कुछ नेमस्पेस पूरी तरह हटा देते हैं। नेमस्पेस व्यवहार सत्यापित करने के लिए अपने विशिष्ट XML के आउटपुट की जाँच करें।
क्या XML से JSON रूपांतरण का कोई मानक है?
कोई औपचारिक W3C या IETF मानक नहीं है। सबसे करीबी संदर्भ BadgerFish परंपरा, Parker परंपरा और OASIS XSLT-to-JSON मैपिंग हैं। व्यवहार में, प्रत्येक लाइब्रेरी अपने नियम स्वयं लागू करती है, इसीलिए एक ही XML अलग-अलग उपकरणों में थोड़ा भिन्न JSON उत्पन्न कर सकता है।
मैं बड़ी XML फ़ाइलें कैसे संभालूं?
ब्राउज़र-आधारित कनवर्टर कुछ मेगाबाइट तक की फ़ाइलों के लिए अच्छी तरह कार्य करते हैं। बड़ी फ़ाइलों (10MB से अधिक) के लिए Python के iterparse (xml.etree.ElementTree) या Node.js xml-stream जैसे स्ट्रीमिंग पार्सर उपयोग करें। ये पूरी tree को memory में load किए बिना दस्तावेज़ को क्रमिक रूप से संसाधित करते हैं।