जवाबों:
JSON पर अनुकूल XML, जब इनमें से कोई भी सत्य है:
जब इन सभी के सत्य होने पर XML पर JSON का समर्थन करें:
जब तक मुझे XML का उपयोग करने की आवश्यकता नहीं होती मैं JSON का उपयोग करता हूं। यह समझना आसान है, और (क्योंकि इसके लिए कम कॉन्फ़िगरेशन ओवरहेड की आवश्यकता होती है) यह पढ़ने और लिखने के लिए प्रोग्राम करना आसान है यदि लाइब्रेरी आपके संदर्भ में उपलब्ध हैं, और वे अब बहुत सर्वव्यापी हैं।
जब अमेज़ॅन ने पहली बार एक वेब सेवा के रूप में अपने कैटलॉग को उजागर किया, तो उन्होंने JSON और XML दोनों की पेशकश की। 90% कार्यान्वयनकर्ताओं ने JSON को चुना।
अपने विशिष्ट मामले को ध्यान में रखते हुए जहां आप पहले से ही ग्राहक की ओर से जावास्क्रिप्ट कर रहे हैं, मैं इन कारणों के लिए JSON के साथ जाऊंगा:
चूँकि JSON जावास्क्रिप्ट का मूल निवासी है इसलिए आपको क्लाइंट की ओर कम कोड लिखना होगा - बस eval()
(या, अभी तक बेहतर JSON.parse()
), JSON स्ट्रिंग और एक ऑब्जेक्ट प्राप्त करें जिसका आप उपयोग कर सकते हैं।
उसी समय क्लाइंट-साइड पर JSON का मूल्यांकन करना अधिक कुशल होगा, और इसलिए तेजी से।
JSON सीरियलाइज़ेशन XML की तुलना में छोटे तार पैदा करता है। JSON का उपयोग करने से तार पर चलने वाले डेटा की मात्रा कम हो जाएगी और उस संबंध में प्रदर्शन में सुधार होगा।
यहाँ कुछ और पढ़ रहा है: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
JSON एक बड़ा ing नहीं-नहीं?
कुछ अन्य चीजें जो मैंने XML बनाम JSON relm में चलाई हैं:
JSON के लिए बहुत अच्छा है
जिसका अर्थ है कि यह एक सरणी या नेस्टेड सरणी को पसंद करता है। हालाँकि JSON दोनों गायब है
इसलिए यदि आप दो या अधिक JSON सेवाओं को संयोजित करने के लिए थे तो संभावित नामस्थान संघर्ष हो सकते हैं। कहा जा रहा है कि JSON का उपयोग लगभग 90% उन्हीं चीजों के लिए किया जा सकता है जब XML का उपयोग मेरे अनुभव में डेटा के आदान-प्रदान के लिए किया जा सकता है।
आमतौर पर JSON अधिक कॉम्पैक्ट है, और पार्स करने के लिए तेज़ है।
XML को प्राथमिकता दें यदि:
XML का एक महत्वपूर्ण मामला (लगभग): पता लगाने की कोशिश करते हैं कि HTML स्निपेट भेजते समय कच्चे डेटा भेजने से ज्यादा फायदेमंद है। AHAH साधारण अनुप्रयोगों में चमत्कार कर सकता है, फिर भी अक्सर अनदेखी की जाती है। आमतौर पर यह शैली मानती है कि एक सर्वर HTML स्निपेट भेजता है जो प्रसंस्करण के बिना वेब पेज में इनलेट होगा।
आमतौर पर एएएचए मामलों में सीएसएस को उपयोगकर्ता के विशिष्ट या अनुप्रयोग-विशिष्ट सेटिंग्स का उपयोग करके स्निपेट के प्रासंगिक भागों को छुपाने / दिखाने जैसे सरल सशर्त लागू करने के लिए स्निपेट की मालिश करने और अधिकतम करने के लिए अधिकतम किया जा रहा है।
JSON पार्स करना आसान और तेज़ है। XML को पार्स करना थोड़ा मुश्किल है, और पार्स और ट्रांसफर (ज्यादातर मामलों में) के लिए धीमा है।
जब से आप jQuery का उपयोग कर रहे हैं, मैं JSON का उपयोग करने का सुझाव देता हूं: jQuery JSON डेटा को पुन: प्राप्त कर सकता है और इसे जावास्क्रिप्ट ऑब्जेक्ट में स्वचालित रूप से परिवर्तित कर सकता है। वास्तव में, आप JSON डेटा को eval का उपयोग करके जावास्क्रिप्ट ऑब्जेक्ट में बदल सकते हैं । XML को आपके द्वारा मैन्युअल रूप से ट्रांसवर्स किया जाना होगा (मुझे नहीं पता कि यह जावास्क्रिप्ट में कैसे काम करता है, लेकिन मैंने उन सभी भाषाओं में मुश्किल / अधिक कष्टप्रद है, जिनके साथ मैंने XML लाइब्रेरीज़ का उपयोग किया है)।
JSON डेटा को पार्स करने के लिए क्लाइंट ब्राउज़र को संसाधित करने के मामले में हमेशा बेहतर होता है। इसके अलावा, JSON हल्के वजन डेटा विनिमय प्रारूप है।
XML पार्सिंग हमेशा ब्राउज़र संसाधनों का बहुत उपभोग करता है और जब तक अन्यथा आवश्यक नहीं हो तब तक हमें जितना संभव हो उतना बचा जाना चाहिए।
मेरे पास वेब प्रोटोकॉल (यानी SOAP, XML, JSON, REST, POX, आदि) के इतिहास का विवरण देने वाले विषय पर एक ब्लॉग पोस्ट है और साथ ही प्रत्येक के कुछ फायदे और नुकसान भी उपलब्ध करा रहा है: http://www.servicestack.net / mythz_blog /? p = 154
मुझे वास्तव में लगता है कि आप डायनामिक (JSON) और स्टैटिक (XML) भाषाओं के बीच अंतर की तुलना करके XML और JSON के बीच कई समानताएं आकर्षित कर सकते हैं।
मूल रूप से XML एक कठोर, अधिक कठोर क्रमांकन प्रारूप है जिसे वैकल्पिक रूप से एक साथ स्कीमा (जो कि XSD या DTD है) के साथ सत्यापित किया जा सकता है। एक्सएसडी काफी विस्तृत हैं और आपको कई अलग-अलग प्रकारों का वर्णन करने की अनुमति देता है जैसे डेट्स, टाइम्स, एनुमरेशंस, यूजर डिफाइंड टाइप्स और यहां तक कि टाइप इनहेरिटेंस, आदि। एसओएपी प्रभावी रूप से एक्सएमएल सुविधा-सेट के शीर्ष पर बनाता है जो आपकी वेब सेवाओं का वर्णन करने के लिए एक मानकीकृत तरीका प्रदान करता है ( एक WSDL के माध्यम से उदाहरण के प्रकार और संचालन)। डब्लूएसडीएल की कल्पना की जटिलता और जटिलता का मतलब है कि इसे विकसित करने के लिए और अधिक थकाऊ हो सकता है, लेकिन साथ ही साथ आपके लिए बहुत अधिक टूलिंग उपलब्ध है और अधिकांश आधुनिक भाषाएं आपके ग्राहक को कुछ बोझों से दूर करने के लिए स्वचालित उपकरण प्रदान करती हैं। बाहरी सेवाओं के साथ हस्तक्षेप करने की कोशिश करने पर बंद करें।
यदि आप एक अच्छी तरह से परिभाषित 'उद्यम सेवा' है जो बार-बार परिवर्तन के अधीन नहीं है या आपकी वेब सेवा को कई अलग-अलग भाषाओं से एक्सेस करने की आवश्यकता नहीं है, तो भी मैं आपको अपनी वेब सेवाओं के लिए XML का उपयोग करने की सलाह दूंगा।
अपने सभी लाभों के लिए XML डाउनसाइड के साथ भी आता है। यह टाइप किए गए एक्स्टेंसिबल प्रारूप प्रदान करने के लिए नामस्थान पर निर्भर करता है और आपको उसी दस्तावेज़ के भीतर विशेषताओं और तत्वों को निर्दिष्ट करने में सक्षम बनाता है। एक दस्तावेज़ के भीतर अलग-अलग नामस्थान होने का मतलब है कि डेटा निकालने के लिए एक Xml Parser का उपयोग करते समय, आपको प्रत्येक तत्व के नाम स्थान को प्रदान करना होगा जिसे आप पुनर्प्राप्त / ट्रैवर्स करना चाहते हैं। यह पेलोड को अतिरिक्त रूप से क्रियाशील बनाता है, जिससे इसे और अधिक क्रिया करने की आवश्यकता होती है। आउटपुट विशेषताओं के साथ-साथ तत्वों का विकल्प होने का अर्थ है कि आपकी कक्षाएं किसी XML दस्तावेज़ में अच्छी तरह से मैप नहीं होती हैं। ये सुविधाएँ अकेले इसे ज्यादातर भाषाओं के लिए एक खराब प्रोग्रामेटिक फिट बनाती हैं जिससे यह काम करने के लिए अधिक थकाऊ और बोझिल हो जाता है।
दूसरी ओर JSON कई मायनों में XML के विपरीत पूर्ण है क्योंकि यह बहुत ही शिथिल-टाइप है और केवल बुनियादी प्रकारों के लिए सरल समर्थन है: नंबर, बूल, स्ट्रिंग, ऑब्जेक्ट्स और एरेज़। बाकी सब कुछ अनिवार्य रूप से एक तार में फिट होना है। जब आप कुछ विशिष्ट प्रकार का समर्थन करना चाहते हैं, तो कुछ सीमाओं के गैर-मानक विनिर्देश का पालन करने की आवश्यकता होगी क्योंकि यह भाषा की सीमाओं के पार संवाद करने की कोशिश करते समय बहुत अच्छा नहीं है। इसके सीमित फीचर-सेट पर अधिकांश भाषाओं के लिए एक अच्छा प्रोग्रामेटिक फिट है - और जावास्क्रिप्ट के लिए पूरी तरह से अनुकूल है क्योंकि JSON स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में सीधे eval'ed किया जा सकता है ।
आकार और प्रदर्शन
मेरे पास कुछ नॉर्थविंड डेटाबेस बेंचमार्क उपलब्ध हैं जो माइक्रोसॉफ़्ट एक्सएमएल और जेएसएन कार्यान्वयन के बीच आकार और गति की तुलना करते हैं। मूल रूप से XML, JSON के आकार से 2 गुना अधिक है, लेकिन साथ ही ऐसा लगता है जैसे Microsoft ने अपने XML DataContractSerializer को अनुकूलित करने में बहुत प्रयास किया क्योंकि यह उनके JSON से 30% से अधिक तेज है। ऐसा लगता है कि आपको आकार और peformance के बीच व्यापार बंद करना होगा। इस तथ्य से खुश नहीं, मैंने अपना खुद का तेज JsonSerializer लिखने का फैसला किया, जो अब 2.6x तेज है तो MS का XML एक है - इसलिए दोनों दुनिया के सर्वश्रेष्ठ :)।
जब आप JSON मार्ग से नीचे जाते हैं, तो आप उन्हीं मुद्दों पर चलते हैं जिनका XML ने 10 साल पहले सामना किया था:
दो अलग-अलग स्रोतों के डेटा को एक JSON पैकेट में मिलाने से तत्व लेबल एक दूसरे से टकरा सकते हैं। एक पैकिंग स्लिप और एक इनवॉइस मिलाएं, और अचानक से पते का मतलब कुछ अलग हो सकता है। यही कारण है कि XML के नाम स्थान हैं ।
विभिन्न JSON संरचनाओं के बीच परिवर्तित करने के लिए सांसारिक कोड लिखने की आवश्यकता होगी। डेटा को मैप करने का एक अधिक घोषणात्मक तरीका काम को आसान बना देगा। इसीलिए XML में XSLT है ।
एक JSON पैकेट की संरचना- इसके क्षेत्र, डेटा प्रकार इत्यादि का वर्णन करना - लोगों को आपकी सेवाओं में हुक करने के लिए आवश्यक है। इसके लिए मेटाडेटा भाषा का होना आवश्यक है। इसी कारण XML में स्कीमा हैं ।
दो एक साथ क्लाइंट-सर्वर वार्तालापों को ध्यान में रखते हुए। यदि आप सर्वर से दो प्रश्न पूछते हैं और एक उत्तर प्राप्त करते हैं, तो आप कैसे जानते हैं कि यह किस प्रश्न का उत्तर देता है? इसलिए XML में WS-Correlation है ।
Http://json.org/xml.html पर पहली पंक्ति से
एक्स्टेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) एक टेक्स्ट फॉर्मेट है जो स्टैंडर्ड जेनरेटेड मार्कअप लैंग्वेज (एसजीएमएल) से लिया गया है। SGML की तुलना में, XML सरल है। हाइपरटेक्स्ट मार्कअप लैंग्वेज (HTML), तुलना करके, और भी सरल है। फिर भी, HTML पर एक अच्छी संदर्भ पुस्तक एक इंच मोटी है। ऐसा इसलिए है क्योंकि दस्तावेजों का प्रारूपण और संरचना एक जटिल व्यवसाय है। । । ।
स्पष्ट रूप से JSON तेज़ है, लेकिन यह और भी स्पष्ट है कि इसे पढ़ना कठिन है। गति के लिए JSON का उपयोग करें, XML का उपयोग करें यदि मानव-संपर्क होगा और आप गति का त्याग कर सकते हैं।
मैं JSON का उपयोग किसी भी प्रकार के कॉन्फ़िगरेशन, डेटा इंटरचेंज या मैसेजिंग के लिए करता हूं। मैं XML का उपयोग केवल तभी करता हूं जब मुझे अन्य कारणों से या दस्तावेज़-समान डेटा को शब्दार्थ में चिह्नित करना होता है।
XML और JSON दोनों Microsoft द्वारा समर्थित हैं। XML शाब्दिक VB 9 में नई शांत विशेषता थी। ASP.NET 4.0 के आगामी संस्करण में JSON क्लाइंट साइड टेम्प्लेटिंग की शक्ति का लाभ उठाने के लिए आवश्यक है।
आपके द्वारा पूछे गए सवाल से ऐसा लगता है कि JSON आपके लिए पसंद हो सकता है क्योंकि jQuery के साथ या उसके बिना क्लाइंट की ओर से प्रक्रिया करना आसान है।
JSON का उपयोग करना
XML का उपयोग करना
मुझे यह लेख डिजिटल बाज़ार में बहुत दिलचस्प लगा।
लेख के कुछ अंश नीचे उद्धृत किए गए हैं।
JSON पेशेवरों के बारे में:
यदि आप चारों ओर से गुजरना चाहते हैं तो परमाणु मूल्य या सूची या परमाणु मूल्यों के हैश हैं, जेएसएन के एक्सएमएल के कई फायदे हैं: यह इंटरनेट पर सीधे प्रयोग करने योग्य है, विभिन्न प्रकार के अनुप्रयोगों का समर्थन करता है, जेएसएन को संसाधित करने के लिए प्रोग्राम लिखना आसान है इसकी कुछ वैकल्पिक विशेषताएं हैं, यह मानव-सुपाच्य और यथोचित रूप से स्पष्ट है, इसका डिज़ाइन औपचारिक और संक्षिप्त है, JSON दस्तावेज़ बनाना आसान है, और यह यूनिकोड का उपयोग करता है। ...
XML पेशेवरों के बारे में:
XML असंरचित डेटा की पूर्ण समृद्धि के साथ उल्लेखनीय रूप से संबंधित है। मैं XML के भविष्य के बारे में बिल्कुल भी चिंतित नहीं हूं, भले ही इसकी मौत को वेब एपीआई डिजाइनरों के कैडर द्वारा उल्लासपूर्वक मनाया जाए।
और मैं एक टक का विरोध नहीं कर सकता "मैंने आपको ऐसा कहा था!" मेरी मेज पर टोकन दूर। मैं यह देखने के लिए उत्सुक हूं कि जब JSON लोग अमीर एपीआई विकसित करने के लिए कहते हैं, तो वे क्या करते हैं। जब वे कम अच्छे डेटा का आदान-प्रदान करना चाहते हैं, तो क्या वे इसे JSON में बदल देंगे? मुझे JSON के लिए एक स्कीमा भाषा का कभी-कभार उल्लेख मिलता है, क्या अन्य भाषाएं अनुसरण करेंगी? ...
त्वरित नियम:
स्पष्टीकरण:
JSON की एकमात्र भूमिका अधिकांश प्रोग्रामिंग भाषाओं में डेटा प्रकारों का उपयोग करके ऑब्जेक्ट-ओरिएंटेड डेटा को क्रमबद्ध करना है: सूचियाँ , हैश और स्केलर्स , और इस उद्देश्य के लिए इसे वास्तव में पीटा या बेहतर नहीं बनाया जा सकता है। बुद्धि के लिए "JSON का कोई संस्करण संख्या नहीं है [जैसा कि JSON व्याकरण का कोई संशोधन अपेक्षित नहीं है"। - डगलस क्रॉफोर्ड (इसे हरा नहीं सकते हैं जो एक संकेत के रूप में है कि आप अपना काम पूरी तरह से करते हैं)
XML को एक बार डेटा इंटर-चेंज फॉर्मेट के रूप में बेचा गया था, लेकिन दो सबसे सामान्य उपयोग के मामलों पर विचार करें: अतुल्यकालिक क्लाइंट-सर्वर संचार (AJAX) - JSON ने एक्सएमएल को पूरी तरह से बदल दिया है (एक्स वास्तव में एक जे होना चाहिए), और वेब सेवाएं : JSON ने XML को एक अनावश्यक विकल्प बना दिया है।
अन्य चीज़ों के लिए एक्सएमएल का व्यापक रूप से उपयोग किया गया था, कार्यक्रमों के लिए मानव लिखने योग्य / पठनीय (?) डेटा फाइलें थीं, लेकिन यहां भी आपके पास एक अधिक संक्षिप्त, अधिक कार्यक्रम-अनुकूल, अधिक मानवीय-अनुकूल प्रारूप YAML, एक JSON सुपरसेट है।
इसलिए डेटा प्रतिनिधित्व के लिए, JSON बोर्ड पर XML को मारता है। फिर XML के लिए क्या बचा है? मिक्स्ड-कंटेंट डॉक्यूमेंट रिप्रेजेंटेशन, जो कि इसका उद्देश्य था ।
अधिकांश नई वेब प्रौद्योगिकियाँ JSON का उपयोग करती हैं, इसलिए निश्चित रूप से JSON का उपयोग करने का एक अच्छा कारण है। एक बड़ा फायदा यह है कि XML में आप एक ही जानकारी के कई अलग-अलग तरीकों का प्रतिनिधित्व कर सकते हैं, जो JSON में अधिक सरल है।
इसके अलावा, JSON IMHO XML की तुलना में अधिक स्पष्ट है, जो मुझे स्पष्ट लाभ देता है। और यदि आप .NET के साथ काम कर रहे हैं, तो Json.NET आपको JSON के साथ काम करने में मदद करने के लिए एक स्पष्ट विजेता है।