XML से JSON कन्वर्टर
बाईं ओर XML पेस्ट करें, दाईं ओर JSON पाएं। एट्रिब्यूट्स @_ प्रिफ़िक्स से सुरक्षित। पूरी तरह आपके ब्राउज़र में चलता है — कोई अपलोड नहीं।
- बाएँ टेक्स्ट एरिया में XML पेस्ट करें।
- "JSON में बदलें" पर क्लिक करें। एलिमेंट नेस्टिंग नेस्टेड ऑब्जेक्ट बन जाती है।
- JSON कॉपी करें या data.json के रूप में डाउनलोड करें।
- दोहराए जाने वाले चाइल्ड एलिमेंट्स स्वचालित रूप से ऐरे में जुड़ जाते हैं।
यह क्या करता है?
fast-xml-parser के सम्मेलनों का उपयोग करते हुए XML को JSON ऑब्जेक्ट में पार्स करता है: चाइल्ड एलिमेंट्स ऑब्जेक्ट प्रॉपर्टी बन जाते हैं, दोहराए जाने वाले चाइल्ड्स ऐरे बन जाते हैं, एट्रिब्यूट्स पैरेंट ऑब्जेक्ट पर `@_` प्रीफ़िक्स से सुरक्षित होते हैं, और मिश्रित नोड्स की टेक्स्ट सामग्री `#text` कुंजी पर आती है। संख्यात्मक और बूलियन एट्रिब्यूट मान `parseAttributeValue: true` के माध्यम से ऑटो-टाइप होते हैं — एक XML `count="42"` `"@_count": 42` के रूप में राउंड-ट्रिप होता है, स्ट्रिंग `"42"` के रूप में नहीं।
उदाहरण
XML इनपुट:
<root version="1">
<name>Ada</name>
<tags>math</tags>
<tags>logic</tags>
</root> JSON आउटपुट:
{
"root": {
"@_version": 1,
"name": "Ada",
"tags": ["math", "logic"]
}
} सामान्य XML समस्याएँ और उन्हें कैसे संभालें
XML में ऐसे एज केस हैं जो JSON में नहीं। ये पैटर्न आश्चर्यजनक आउटपुट पैदा करते हैं।
- एकल चाइल्ड बनाम कई चाइल्ड्स। `<a><b/></a>` `{"a":{"b":""}}` (ऑब्जेक्ट प्रॉपर्टी के रूप में एकल चाइल्ड) पैदा करता है, लेकिन `<a><b/><b/></a>` `{"a":{"b":["",""]}}` (ऐरे के रूप में कई) पैदा करता है। यदि आपका डाउनस्ट्रीम कोड हमेशा ऐरे की उम्मीद करता है, तो रूपांतरण के बाद नॉर्मलाइज़ करें।
- एट्रिब्यूट्स बनाम चाइल्ड एलिमेंट्स। एट्रिब्यूट्स चाइल्ड्स के समान स्तर पर `@_` प्रीफ़िक्स के साथ दिखाई देते हैं। `<user id="1"><name>Ada</name></user>` `{"user":{"@_id":1,"name":"Ada"}}` बन जाता है। कुछ टूल एट्रिब्यूट्स को प्रॉपर्टी में मर्ज करते हैं — यह यहाँ इस्तेमाल किए गए सम्मेलन से अलग है।
- मिश्रित सामग्री (टेक्स्ट + चाइल्ड एलिमेंट्स)। `<p>Hello <b>world</b></p>` `{"p":{"#text":"Hello ","b":"world"}}` पैदा करता है। टेक्स्ट कैप्चर हो जाती है पर चाइल्ड्स के सापेक्ष इसकी स्थिति खो जाती है — JSON में ऑर्डर्ड मिश्रित सामग्री दर्शाने का तरीका नहीं। अधिकांश कॉन्फ़िग-स्टाइल XML इस केस से नहीं मिलता।
- नेमस्पेस। नेमस्पेस (`<x:foo xmlns:x="...">`) एलिमेंट नाम (`x:foo`) के हिस्से के रूप में सुरक्षित हैं। कई XML उपभोक्ता प्रीफ़िक्स हटाते हैं; यदि आपको यह चाहिए, इसे पोस्ट-प्रोसेसिंग चरण के रूप में करें।
- CDATA अनुभाग। `<![CDATA[some text]]>` सादे टेक्स्ट के रूप में पार्स होता है और अपने पेरेंट के `#text` से जुड़ जाता है। CDATA फ़्रेमिंग खो जाती है — अधिकांश मामलों के लिए ठीक है पर यदि फ़्रेमिंग सिमेंटिक रूप से अर्थपूर्ण थी तो ध्यान देने योग्य है।
- सेल्फ-क्लोज़िंग बनाम खाली। `<x/>` और `<x></x>` XML में समतुल्य हैं और समान JSON आउटपुट पैदा करते हैं (मान के लिए `""`)। मूल फ़्रेमिंग JSON से रिकवर नहीं की जा सकती।
अक्सर पूछे जाने वाले प्रश्न
मेरे आउटपुट में एट्रिब्यूट्स पर `@_` प्रीफ़िक्स क्यों है?
यह XML एट्रिब्यूट्स को चाइल्ड एलिमेंट्स से अलग करता है। प्रीफ़िक्स के बिना, `<user id="1"><id>foo</id></user>` में दो `id` कुंजियाँ होंगी — एक JSON ऑब्जेक्ट केवल एक रख सकता है। प्रीफ़िक्स दोनों को राउंड-ट्रिपेबल रखता है। यदि आपको प्रीफ़िक्स की ज़रूरत नहीं, पोस्ट-प्रोसेसिंग चरण में `"@_"` को `""` से बदलें (और टकराव जोखिम स्वीकारें)।
क्या मैं रैपिंग रूट कुंजी के बिना JSON पा सकता हूँ?
XML में हमेशा एकल रूट एलिमेंट होता है। JSON राउंड-ट्रिपेबिलिटी के लिए उस रैपिंग को रखता है। यदि आप आंतरिक ऑब्जेक्ट चाहते हैं, रूपांतरण के बाद `result.root` का उपयोग करें न कि `result`।
क्या XML टिप्पणियाँ संरक्षित हैं?
नहीं। JSON में टिप्पणी सिंटैक्स नहीं है, और पार्सर XML टिप्पणियों को अनदेखा करने के लिए कॉन्फ़िगर है। यदि आपको टिप्पणियाँ संरक्षित करनी हैं, आपको ऐसा भिन्न मध्यवर्ती प्रतिनिधित्व उपयोग करना होगा जो उनका समर्थन करता है।
क्या एट्रिब्यूट मान टाइप होते हैं?
हाँ — `parseAttributeValue: true` सेट है, इसलिए `count="42"` `"@_count": 42` (संख्या) बन जाता है और `enabled="true"` `"@_enabled": true` (बूलियन) बन जाता है। यदि आपको स्ट्रिंग के रूप में एट्रिब्यूट्स चाहिए, पोस्ट-प्रोसेस करें या कॉन्फ़िगरेशन फ़ॉर्क करें।
क्या मेरा XML अपलोड होता है?
नहीं। सब आपके ब्राउज़र में चलता है — आपका XML इस पेज के JavaScript द्वारा पार्स होता है और कभी किसी सर्वर पर नहीं भेजा जाता। ब्राउज़र डेवलपर टूल्स में सत्यापित करें।
क्या यह बहुत बड़ी XML फ़ाइलें संभाल सकता है?
लगभग 30 MB तक टेक्स्ट एरिया धीमा होने से पहले। पार्सर लीनियरली स्केल करता है। बड़े इनपुट के लिए, कमांड लाइन पर fast-xml-parser चलाएँ — वही लाइब्रेरी।