XML ⇄ JSON
कोई भी फ़ॉर्मेट पेस्ट करें — दूसरा टाइप करते ही दिखता है, दोनों दिशाओं में।
इसका उपयोग कैसे करें
- बॉक्स में XML या JSON पेस्ट करें — परिणाम टाइप करते ही बनता है, दबाने के लिए कोई बटन नहीं। दिशा पहले कैरेक्टर से पहचानी जाती है (XML के लिए <, JSON के लिए [ या {) और परिणाम के ऊपर दिखती है, ताकि आप उसे जाँच सकें।
- अगर दिशा गलत अनुमान लगी हो, तो XML → JSON या JSON → XML चुनें। नीचे के विकल्प दिशा के साथ बदलते हैं: XML → JSON “संख्याएँ और बूलियन पहचानें” दिखाता है, और JSON → XML ऐरे लपेटने के लिए “रूट नाम” दिखाता है।
- परिणाम कॉपी या डाउनलोड करें। दोनों में ठीक वही टेक्स्ट होता है जो स्क्रीन पर दिखता है; फ़ाइल का नाम data.json या data.xml होता है। “नमूना लोड करें” सक्रिय दिशा के लिए उदाहरण भर देता है।
उदाहरण
इनपुट (XML)
<note id="1"><to>अनन्या</to><from>राहुल</from><body>नमस्ते!</body></note>
आउटपुट (JSON)
{ "note": { "@id": "1", "to": "अनन्या", "from": "राहुल", "body": "नमस्ते!" } }
id एट्रिब्यूट “@id” बनता है, हर चाइल्ड एलिमेंट कुंजी बनता है, और <body> के अंदर का टेक्स्ट स्ट्रिंग मान बनता है। हर मान — id सहित — टेक्स्ट के रूप में रखने के लिए “संख्याएँ और बूलियन पहचानें” बंद करें।
नियम, सीमाएँ और ज्ञात समस्याएँ
- कोई फ़ाइल अपलोड, ड्रैग-एंड-ड्रॉप या URL से लाना नहीं: टेक्स्ट पेस्ट करें। ड्रॉप ज़ोन परिणाम की ज़रूरी ऊँचाई खा जाता, और फ़ाइलें ठीक से पढ़ने का मतलब गैर-UTF-8 एन्कोडिंग संभालना है — फ़ाइल को XML फ़ॉर्मेटर (GB18030, Big5, Windows-1256) में खोलकर टेक्स्ट कॉपी करें।
- इनपुट 1,000,000 अक्षरों तक सीमित है; 200,000 से अधिक पर परिणाम तब तक रुकता है जब तक आप टाइप करना न रोकें और यह बताता है। कड़ी सीमा से ऊपर स्पष्ट त्रुटि मिलती है — इनपुट कभी चुपचाप नहीं काटा जाता।
- मैपिंग जानबूझकर तय है: एलिमेंट ऑब्जेक्ट बनता है; एट्रिब्यूट “@name” बनता है; एलिमेंट का टेक्स्ट “#text” बनता है; चाइल्ड एलिमेंट कुंजी बनता है; और एक ही नाम के कई चाइल्ड ऐरे बनते हैं। केवल टेक्स्ट वाला लीफ़ एलिमेंट सादा स्ट्रिंग बनता है, ताकि गहराई से नेस्टेड दस्तावेज़ पढ़ने योग्य रहे।
- प्रकार की पहचान (XML → JSON) रूढ़िवादी है: केवल true / false / null (सिर्फ़ छोटे अक्षरों में) और सख़्त JSON संख्याएँ असली प्रकार बनती हैं। अग्रणी शून्य वाला पूर्णांक (00501) और 16 अंक या अधिक की संख्या स्ट्रिंग रहती है; स्विच बंद होने पर बाकी सब टेक्स्ट रहता है। एट्रिब्यूट हमेशा टेक्स्ट रहते हैं, कभी फिर से टाइप नहीं होते, क्योंकि XML एट्रिब्यूट टेक्स्टुअल होते हैं।
- JSON → XML को एक रूट चाहिए, इसलिए शीर्ष-स्तर का ऑब्जेक्ट अपनी एक कुंजी को रूट एलिमेंट बनाता है। शीर्ष-स्तर के JSON ऐरे का कोई एक रूट नहीं होता और वह “रूट नाम” एलिमेंट में लपेटा जाता है, हर आइटम दोहराया जाने वाला चाइल्ड बनता है (डिफ़ॉल्ट रूप से “item” नाम से)।
- कुंजी के नीचे JSON मान ऑब्जेक्ट, ऐरे, स्ट्रिंग, संख्या, true / false या null हो सकता है। “@name” कुंजियाँ एट्रिब्यूट बनती हैं (null / undefined छोड़े जाते हैं); “#text” एलिमेंट का टेक्स्ट बनता है; बाकी हर कुंजी चाइल्ड एलिमेंट बनती है। ऐरे दोहराए गए एलिमेंट बनाते हैं।
- XML कमेंट, प्रोसेसिंग इंस्ट्रक्शन (<? … ?>) और DOCTYPE छोड़े और गिने जाते हैं (वे JSON में प्रस्तुत नहीं हो सकते); CDATA टेक्स्ट के रूप में रखा जाता है। मिश्रित सामग्री — चाइल्ड एलिमेंट के बगल बैठा टेक्स्ट — “#text” में फ़्लैटन होती है और उसका मूल क्रम सुरक्षित नहीं रहता; प्रभावित एलिमेंट गिने जाते हैं ताकि आप देख सकें।
- JSON सख़्ती से पार्स होता है: कोई कमेंट नहीं, कोई अतिरिक्त कॉमा नहीं, कोई सिंगल कोट नहीं, कोई बिना एस्केप कंट्रोल कैरेक्टर नहीं, नेस्टिंग 64 स्तरों तक। हर पंक्ति पर एक ऑब्जेक्ट (JSON Lines) स्वीकार नहीं है — पहले ऑब्जेक्ट को ऐरे में लपेटें।
- XML एंटिटी संदर्भ (& < >) टेक्स्ट और एट्रिब्यूट में ज्यों के त्यों रहते हैं (डिकोड नहीं होते), इसलिए राउंड ट्रिप ठीक वही बाइट पैदा करता है। एस्केपिंग JSON → XML पक्ष में जोड़ी जाती है: टेक्स्ट में & < > एस्केप होते हैं, और एट्रिब्यूट मानों में " एस्केप होता है।
- दायरे से बाहर: XSLT, XPath, XML Schema वैलिडेशन, टैग नाम के हिस्से के अलावा नेमस्पेस, डुप्लीकेट कुंजियों वाला JSON (आख़िरी जीतता है, JSON.parse की तरह), और कमेंट का क्रम सुरक्षित रखना। कुछ अपलोड, संग्रहीत या URL में नहीं जाता।
संबंधित टूल
डेटा दूसरे फ़ॉर्मेट में आ जाने के बाद लोगों को आमतौर पर क्या चाहिए।