डेटा कन्वर्टर्स · 6 मिनट पढ़ें
XML से JSON: निर्णय प्रत्येक कनवर्टर को लेना होता है
XML और JSON दोनों पेड़ हैं, इसलिए उनके बीच रूपांतरण करना मामूली होना चाहिए - फिर भी आपके द्वारा देखे गए प्रत्येक XML से JSON रूपांतरण ने एक अलग दिखने वाला परिणाम उत्पन्न किया है। ऐसा इसलिए है क्योंकि XML जानकारी रखता है JSON में इसके लिए कोई जगह नहीं है: विशेषताएँ, मिश्रित पाठ और तत्व, नामस्थान और दस्तावेज़ जहाँ एक ही टैग एक या हज़ार बार दिखाई देता है। एक अच्छा कनवर्टर उन विकल्पों को छिपाने के बजाय स्पष्ट रूप से बनाता है।
अद्यतन
कोई भी कनवर्टर अस्पष्टता से बच नहीं सकता है
`<items><item>x</item></items>` पर विचार करें। `आइटम` एक स्ट्रिंग या एक की सूची होनी चाहिए? एक्सएमएल यह नहीं कहता है, और आपके द्वारा इसके खिलाफ कोड लिखे जाने के क्षण में अंतर मायने रखता है: एक उपभोक्ता हमेशा एक - सरणी टूटने की उम्मीद करता है, और दूसरा आइटम आने पर किसी ऑब्जेक्ट के टूटने की उम्मीद करता है। परिपक्व कन्वर्टर्स आपको चुपचाप अनुमान लगाने के बजाय ज्ञात सूची तत्वों के लिए सरणियों को मजबूर करने देते हैं, क्योंकि अनुमान उत्पादन तक पहुंचने के लिए अक्सर पर्याप्त होता है।
विशेषताओं को नामकरण परंपरा की आवश्यकता है
JSON में कोई विशेषता नहीं है, इसलिए एक विशेषता को या तो सहोदर कुंजी या नेस्टेड ऑब्जेक्ट बनना होगा। व्यापक रूप से उपयोग किए जाने वाले कन्वेंशन उपसर्ग विशेषता नामों को `@` के साथ जोड़ते हैं - `<image src='a.png'/>` `{'@src': 'a.png'}` बन जाता है - जबकि तत्व पाठ एक आरक्षित कुंजी में चला जाता है जैसे कि `#text` जब किसी तत्व में विशेषताएँ और सामग्री दोनों होती हैं। कनवर्टर जो भी परंपरा का उपयोग करता है, उसे लगातार लागू किया जाना चाहिए, क्योंकि आधा-परिवर्तित XML, अपरिवर्तित XML से भी बदतर है।
<rss version="2.0"><channel><title>Feed</title></channel></rss>
→ {
"rss": {
"@version": "2.0",
"channel": { "title": "Feed" }
}
}
नेमस्पेस
नामांकित दस्तावेज़ - SOAP सेवाएँ, साइटमैप, कार्यालय प्रारूप - तत्व नामों को `ns:element` के रूप में योग्य बनाते हैं। JSON का कोई समकक्ष नहीं है, इसलिए एक कनवर्टर या तो उपसर्ग को हटा देता है, इसे कुंजी के हिस्से के रूप में रखता है, या नेमस्पेस यूआरआई के आसपास दस्तावेज़ को पुनर्व्यवस्थित करता है। जब दो नामस्थान एक ही स्थानीय नाम का उपयोग करते हैं तो इसे छोड़ना आम और कभी-कभी विनाशकारी होता है। यदि आपका दस्तावेज़ नेमस्पेस का उपयोग करता है, तो उस पर भरोसा करने से पहले टकराव के लिए आउटपुट की जांच करें, और कुंजी में उपसर्ग रखना पसंद करें।
जहां इस रूपांतरण का वास्तव में उपयोग किया जाता है
- आरएसएस और एटम फ़ीड - रूपांतरण के बाद जावास्क्रिप्ट में फ़ीड पढ़ना बहुत आसान है।
- एसओएपी और लीगेसी एपीआई - एक प्रतिक्रिया को ऐसी चीज़ में बदलना जिसे एक आधुनिक ग्राहक उपभोग कर सके।
- साइटमैप और कॉन्फ़िगरेशन फ़ाइलें - स्कीमा को समझने वाले संपादक के बिना संरचना का निरीक्षण करना।
- डेटा माइग्रेशन - रिकॉर्ड को एक XML-युग प्रणाली से JSON-आधारित प्रणाली में ले जाना।
राउंड-ट्रिप निष्ठा एक मिथक है। XML को JSON में परिवर्तित करना और वापस करना शायद ही कभी बाइट के लिए मूल दस्तावेज़ बाइट लौटाता है, क्योंकि घोषणा आदेश, व्हाइटस्पेस, टिप्पणियाँ और सीडीएटीए जीवित नहीं रहते हैं। जब आपको डेटा को कहीं और उपभोग करने की आवश्यकता हो तो कनवर्ट करें, बैकअप रणनीति के रूप में नहीं।
पहले सत्यापन करें, फिर रूपांतरित करें
XML पार्सर्स खुले टैग और अमान्य इकाइयों के बारे में सख्त हैं, और त्रुटि संदेश आमतौर पर सटीक होते हैं। कनवर्ट करने से पहले दस्तावेज़ को ठीक करें - एक अच्छी तरह से तैयार किया गया इनपुट ही रखने लायक JSON संरचना प्राप्त करने का एकमात्र तरीका है। रूपांतरण तब ब्राउज़र में स्थानीय रूप से चलता है, जो तब मायने रखता है जब XML ग्राहक निर्यात या आंतरिक सेवा प्रतिक्रिया हो, और यह ऑफ़लाइन काम करता रहता है।
XML से JSON - अक्सर पूछे जाने वाले प्रश्न
XML से JSON अलग-अलग उपकरणों में अलग-अलग आकार का आउटपुट क्यों उत्पन्न करता है?
XML में विशेषताएँ, नामस्थान और दोहराए गए तत्व होते हैं जिन्हें JSON सीधे व्यक्त नहीं किया जा सकता है, इसलिए प्रत्येक उपकरण परंपराओं को चुनता है - `@` विशेषताओं के लिए, `#text` सामग्री के लिए, ज्ञात सूचियों के लिए सरणियाँ। आपके द्वारा चुने गए सम्मेलन से अधिक लगातार टूलींग मायने रखती है।
JSON में दोहराए गए XML तत्वों को कैसे दर्शाया जाता है?
एक सरणी के रूप में, आमतौर पर बिना शर्त तत्वों के लिए एक से अधिक बार देखा जाता है। जब तक आप उस तत्व के लिए सरणियों को बाध्य नहीं करते, तब तक एकल घटनाएँ ऑब्जेक्ट बनी रह सकती हैं, जो दोहराई जा सकने वाली किसी भी चीज़ के लिए सुरक्षित विकल्प है।
क्या मैं SOAP प्रतिक्रिया को JSON में बदल सकता हूँ?
हां, हालांकि इसमें नामस्थान और एक लिफाफा संरचना होगी जो अधिकांश उपभोक्ता कोड नहीं चाहते हैं। रूपांतरित करें, फिर परिणाम को उस पेलोड के अनुसार आकार दें जिसकी आपको वास्तव में आवश्यकता है, न कि अपने आवेदन के माध्यम से लिफ़ाफ़ा पास करने की।
इस पोस्ट में उल्लिखित उपकरण
पढ़ने के लिए और लेख
6 मिनट पढ़ें
YAML से JSON: अपना दिमाग खोए बिना कॉन्फ़िगरेशन परिवर्तित करना
बहु-दस्तावेज़ समर्थन और सटीक त्रुटि स्थानों के साथ ब्राउज़र में YAML को JSON में कनवर्ट करें - साथ ही YAML गलतियाँ जो सीआई पाइपलाइनों को चुपचाप तोड़ देती हैं।
6 मिनट पढ़ें
JSON फ़ॉर्मेटर: सुंदर, छोटा, और वास्तव में मान्य
एक JSON फ़ॉर्मेटर जो सटीक त्रुटि स्थानों के साथ सुंदर-प्रिंट, छोटा और मान्य करता है - साथ ही लगभग हर अमान्य JSON त्रुटि के पीछे पाँच सिंटैक्स गलतियाँ।
5 मिनट पढ़ें
CSV से JSON: स्प्रेडशीट से संरचित डेटा तक
ब्राउज़र में CSV को JSON में कनवर्ट करें - हेडर पंक्तियाँ, सीमांकक, उद्धरण नियम और प्रकार प्रबंधन समझाया गया, स्प्रेडशीट निर्यात के साथ जो पार्सर को तोड़ता है।