मुझे लगता है कि XML पर JSON का एक बड़ा लाभ यह है कि मुझे यह तय नहीं करना है कि डेटा को कैसे प्रारूपित किया जाए। जैसा कि कुछ ने दिखाया है, एक्सएमएल में भी सरल डेटा संरचनाओं को करने के कई तरीके हैं - तत्वों के रूप में, गुण मान आदि, फिर आपको इसे दस्तावेज़ करना होगा, XML स्कीमा या आराम एनजी या कुछ अन्य बकवास लिखना होगा ... यह है गड़बड़।
XML की अपनी खूबियां हो सकती हैं, लेकिन बुनियादी डेटा इंटरचेंज के लिए, JSON बहुत अधिक कॉम्पैक्ट और प्रत्यक्ष है। पायथन डेवलपर के रूप में, JSON में और पायथन में सरल डेटा प्रकारों के बीच कोई बाधा नहीं है। इसलिए अगर मैं एक AJAX क्वेरी के लिए एक सर्वर-साइड हैंडलर लिख रहा था जो किसी विशेष स्की रिसॉर्ट के लिए बर्फ की स्थिति के बारे में पूछ रहा था, तो मैं इस तरह एक शब्दकोश का निर्माण करूंगा:
conditions = {
'new_snow_24': 5.0,
'new_snow_48': 8.5,
'base_depth': 88.0,
'comments': 'Deep and steep!',
'chains_required': True,
}
return simplejson.dumps(conditions) # Encode and dump `conditions` as a JSON string
जब JSON (Python के लिए 'simplejson' जैसी लाइब्रेरी का उपयोग करके) के माध्यम से अनुवाद किया जाता है, तो परिणामस्वरूप JSON संरचना लगभग समान दिखाई देती है (JSON को छोड़कर, बूलियन कम आवरण वाले होते हैं)।
उस संरचना को डिकोड करने के लिए केवल एक JSON पार्सर की आवश्यकता होती है, चाहे वह जावास्क्रिप्ट या उद्देश्य-सी के लिए एक देशी iPhone ऐप या C # या पायथन क्लाइंट के लिए हो। फ्लोट्स की व्याख्या फ्लोट्स के रूप में की जाएगी, स्ट्रिंग्स के रूप में तार, और बूलियन को बूलियन के रूप में। पायथन में 'सिंपलजसन' लाइब्रेरी का उपयोग करते हुए, एक simplejson.loads(some_json_string)
बयान मुझे एक पूर्ण डेटा संरचना वापस देगा जैसे मैंने उपरोक्त उदाहरण में बनाया है।
अगर मैंने XML लिखा है, तो मुझे यह तय करना होगा कि मैं तत्व या विशेषताओं को करूं या नहीं। निम्नलिखित में से दोनों मान्य हैं:
<conditions>
<new-snow-24>5</new-snow-24>
<new-snow-48>8.5</new-snow-48>
<chains-required>yes</chains-required>
<comments>deep and steep!</comments>
</conditions>
<conditions newSnow24="5" newSnow48="8.5" chainsRequired="yes">
<comments>deep and steep!</comments>
</conditions>
तो न केवल मुझे उस डेटा के बारे में सोचना होगा जो मैं क्लाइंट को भेजना चाहता हूं, मुझे यह सोचना होगा कि इसे कैसे प्रारूपित करना है। XML, अपने नियमों के साथ अधिक सख्त होने के कारण सादे SGML से सरल है, फिर भी उस डेटा के बारे में सोचने के लिए बहुत सारे तरीके प्रदान करता है। तब मुझे इसे उत्पन्न करने के बारे में जाना होगा। मैं सिर्फ एक पायथन डिक्शनरी (या अन्य सरल डेटा संरचना) नहीं ले सका और कह सकता हूं कि "अपने एक्सएमएल में खुद को बनाओ"। मैं एक XML दस्तावेज़ प्राप्त नहीं कर सका और तुरंत कह सकता हूं कि "कस्टम ऑब्जेक्ट्स और डेटा संरचनाओं में अपने आप को बनायें" बिना किसी कस्टम पार्सर को लिखे या XML स्कीमा / आराम एनजी और ऐसे अन्य दर्द के अतिरिक्त ओवरहेड की आवश्यकता के बिना।
इसकी कमी यह है कि यह JSON के डेटा को एन्कोड और डिकोड करने के लिए बहुत आसान और अधिक प्रत्यक्ष है, विशेष रूप से त्वरित इंटरचेंज के लिए। यह डायनेमिक भाषा पृष्ठभूमि से आने वाले लोगों के लिए अधिक लागू हो सकता है, क्योंकि जावास्क्रिप्ट / JSON में बनाए गए मूल डेटा प्रकार (सूची, शब्दकोश, आदि) सीधे पायथन, पर्ल, रूबी, आदि में समान या समान डेटा प्रकारों के लिए मैप करते हैं।