JSON ↔ XML कन्वर्टर
JSONJSON और XML के बीच रूपांतरण करता है। नेस्टेड ऑब्जेक्ट्स को एक कॉन्फ़िगर करने योग्य रूट तत्व में लपेटा जाता है।
इस पृष्ठ पर
JSON ↔ XML कन्वर्टर क्या है?#
JSON और XML संरचनात्मक डेटा लिखने के दो अलग तरीके हैं, और वे सिंटैक्स स्तर पर आपस में बदले नहीं जा सकते — एक ब्रेस और ब्रैकेट का उपयोग करता है, दूसरा एंगल-ब्रैकेट टैग का। इनके बीच कोई कन्वर्टर “कम्प्रेस” या “एन्कोड” नहीं करता; वह वैल्यूज़ के उसी ट्री को दूसरी नोटेशन में दोबारा व्यक्त करता है, ताकि केवल XML बोलने वाला सिस्टम JSON में आए डेटा का उपभोग कर सके, और इसका उल्टा भी।
मैपिंग ज़्यादातर यांत्रिक है पर इसमें दो जाने-पहचाने कच्चे किनारे हैं। पहला, XML को ठीक एक रूट एलिमेंट चाहिए जो सब कुछ घेरे, जबकि JSON खुशी-खुशी टॉप लेवल को एक खाली ऑब्जेक्ट या ऐरे रहने देता है — इसलिए JSON से XML में जाने का मतलब हमेशा उस बाहरी रैपर के लिए एक नाम चुनना होता है। दूसरा, XML एलिमेंट्स एट्रिब्यूट्स ले सकते हैं (<a id="7">), जिसका JSON में कोई नेटिव समतुल्य नहीं है; आम परिपाटी उन्हें @-प्रीफ़िक्स वाली कुंजीयों के नीचे रखना है, और एट्रिब्यूट्स के साथ बैठा कोई भी टेक्स्ट एक #text कुंजी के नीचे।
यह पेज ब्राउज़र में दोनों दिशाओं में कन्वर्ट करता है: JSON से XML (आपके वैल्यू को आपके द्वारा नामित रूट एलिमेंट के नीचे लपेटकर), और XML से JSON (एट्रिब्यूट्स को @-कीज़ में खोलकर और, डिफ़ॉल्ट रूप से, बाहरी रूट हटाकर ताकि आपको भीतर का वैल्यू वापस मिले)।
इसका उपयोग कैसे करें#
- टूलबार के ऊपर-बाईं ओर JSON → XML / XML → JSON टॉगल से दिशा चुनें।
- बाईं ओर इनपुट पैनल में टाइप करें या चिपकाएँ।
- JSON → XML को वैध JSON चाहिए। कोई भी टॉप-लेवल वैल्यू रूट एलिमेंट के नीचे लपेटा जाता है।
- XML → JSON को एक वेल-फ़ॉर्म्ड XML दस्तावेज़ चाहिए। एकल बाहरी एलिमेंट स्वतंत्र रूप से खोला जाता है, इसलिए आपको उसकी भीतर की सामग्री JSON के रूप में मिलती है।
- JSON → XML मोड में, रूट एलिमेंट फ़ील्ड (डिफ़ॉल्ट
root) सेट करें ताकि रैपर टैग का नाम रखें — जैसेuser,feed,response। XML एक रूट को अनिवार्य मानता है, इसलिए यह नाम हमेशा ज़रूरी है। - परिणाम आउटपुट पैनल में लाइव दिखाई देता है। उसे लेने के लिए कॉपी पर क्लिक करें।
- नमूना मौजूदा दिशा के अनुकूल एक छोटा दस्तावेज़ लोड करता है; साफ़ करें दोनों पैनलों को रीसेट करता है।
प्रमुख विशेषताएँ#
- दोनों दिशाएँ, एक औज़ार। एक ही टॉगल JSON-टू-XML और XML-टू-JSON के बीच पलट जाता है, साथ ही इनपुट पैनल स्वतः दोबारा टारगेट हो जाता है।
- कॉन्फ़िगर करने योग्य रूट एलिमेंट। चूंकि XML बिना एकल बाहरी एलिमेंट के अस्तित्व में नहीं रह सकता, आप रैपर का नाम रखते हैं; कन्वर्टर किसी भी JSON टॉप-लेवल आकार के लिए लपेटने का काम संभालता है।
- उचित XML डेक्लेरेशन। JSON-टू-XML आउटपुट मानक
<?xml version="1.0" encoding="UTF-8"?>प्रोलॉग से शुरू होता है और दो-स्पेस इंडेंटेशन के साथ प्रिंटी-प्रिंट किया जाता है। - एट्रिब्यूट्स राउंड-ट्रिप। XML-टू-JSON एलिमेंट एट्रिब्यूट्स को
@-प्रीफ़िक्स वाली कुंजीयों के नीचे सुरक्षित रखता है, और एट्रिब्यूट्स के बगल का टेक्स्ट#textके नीचे रखा जाता है, इसलिए कुछ भी चुपचाप नहीं गिराया जाता। - नंबर-जागरूक पार्सिंग। XML पूरी तरह टेक्स्ट है; पार्सर नंबर जैसे दिखने वाले एलिमेंट वैल्यूज़ को वापस JSON नंबर में बदल देता है (तो
<age>36</age>36बनता है, न कि"36")।
कार्य उदाहरण#
JSON → XML#
दिशा JSON → XML पर सेट और रूट नाम root के साथ, नमूना लोड करें:
{
"name": "Ada",
"age": 36,
"skills": ["math", "logic"]
}
कन्वर्टर सब कुछ <root> के नीचे लपेटता है और ऐरे को XML के ज़रूरी तरीके से फैलाता है — हर प्रविष्टि उसी टैग के साथ अपना एलिमेंट बन जाती है:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>Ada</name>
<age>36</age>
<skills>math</skills>
<skills>logic</skills>
</root>
रूट एलिमेंट फ़ील्ड को person में बदलें और रैपर <person> / </person> हो जाता है — भीतर की संरचना अछूती रहती है।
XML → JSON#
XML → JSON पर पलटें और नमूना लोड करें:
<?xml version="1.0"?>
<root><name>Ada</name><age>36</age></root>
बाहरी <root> हटा दिया जाता है, और भीतर के एलिमेंट्स JSON प्रॉपर्टीज़ बन जाते हैं, जिनमें 36 एक नंबर के रूप में पहचाना जाता है:
{
"name": "Ada",
"age": 36
}
एट्रिब्यूट्स भी सुरक्षित रखे जाते हैं। <a id="7">label</a> जैसा एलिमेंट { "@id": "7", "#text": "label" } देता है — एट्रिब्यूट @id के नीचे, टेक्स्ट #text के नीचे, और दोनों में से कोई भी नहीं खोया जाता।
अक्सर पूछे जाने वाले प्रश्न#
मेरा JSON ऐरे बाहरी आइटमों वाले एक रैपर के बजाय दोहराए गए XML एलिमेंट्स क्यों बनता है?#
यही XML एक सूची को दर्शाता है: इसमें कोई “ऐरे” निर्माण नहीं है, इसलिए हर प्रविष्टि उसी टैग नाम के साथ अपना एलिमेंट होनी चाहिए। कुंजी skills के नीचे JSON ऐरे ["math", "logic"] इसलिए दो सिबलिंग <skills> एलिमेंट्स बनता है, न कि चिल्ड्रन रखता एकल <skills>। यह मानक, स्कीमा-अनुकूल मैपिंग है — XML उपभोक्ता इसी की उम्मीद करते हैं।
XML → JSON में, मेरा बाहरी एलिमेंट कहाँ गया?#
कन्वर्टर एकल रूट को स्वतः खोलता है। XML ठीक एक टॉप-लेवल एलिमेंट को बाध्य करता है, पर JSON में वह रैपर आमतौर पर अनावश्यक होता है — <root><name>Ada</name></root> में root कोई जानकारी नहीं रखता जिसकी JSON को ज़रूरत हो। उसे हटाने से आपको सार्थक भीतरी वैल्यू सीधे मिलता है। यदि आपको सच में रूट सुरक्षित रखना है, तो उसे एक सामान्य एलिमेंट के रूप में रखें और नाम से उस तक पहुँचें।
36 आउटपुट में नंबर क्यों है, स्ट्रिंग नहीं?#
XML में कोई अलग नंबर टाइप नहीं है — टैग्स के बीच सब कुछ टेक्स्ट है। पार्सर न्यूमेरिक कोएर्शन लागू करता है, इसलिए एलिमेंट जिसका टेक्स्ट नंबर जैसा दिखता है (36, 3.14), JSON नंबर के रूप में लौटता है। यह सामान्य डेटा के लिए सुविधाजनक है, पर इसका मतलब यह भी है कि प्रोडक्ट कोड <code>007</code> जैसा वैल्यू अपनी अग्रणी शून्य खो देगा — ऐसे वैल्यूज़ को एट्रिब्यूट के रूप में सहेजें या स्ट्रिंग ही स्वीकार करें।
क्या यह किसी भी XML दस्तावेज़ को कन्वर्ट कर सकता है?#
वेल-फ़ॉर्म्ड XML हाँ, जिसमें टैग्स में नेमस्पेस, एट्रिब्यूट्स, सेल्फ़-क्लोजिंग एलिमेंट्स, और डेक्लेरेशन शामिल हैं। यह DTD रिज़ॉल्व नहीं करता, स्कीमा के विरुद्ध वैलिडेट नहीं करता, या बाहरी एंटिटीज़ लात नहीं — प्रोसेसिंग स्थानीय और केवल-टेक्स्ट है, जिसका मतलब यह भी है कि ऐसे दस्तावेज़ जिन पर आप पूरी तरह भरोसा नहीं करते, उन्हें चिपकाना सुरक्षित है।