2009-02-25 15 views
16

AJAX अनुरोधों के लिए जेसन बनाम xml के फायदे और नुकसान क्या हैं? प्रदर्शन में कोई अंतर है? यानी ब्राउज़र दूसरे प्रारूप की तुलना में एक प्रारूप को संसाधित करने में सक्षम हैं?AJAX अनुरोधों के लिए जेसन बनाम xml के फायदे और नुकसान क्या हैं?

+2

[AJAX या AJAJ?] (Http://izlooite.blogspot.com/2010/05/ajax-or-ajax-xml-vs-json.html) –

उत्तर

17

संक्षेप में, JSON (जिसे जावास्क्रिप्ट का सबसेट माना जा सकता है) एक्सएमएल की तुलना में बहुत कम है। यह कई सकारात्मक दुष्प्रभाव

  • JSON इसी एक्सएमएल
  • से छोटी है JSON तेजी से होता है, यानी सरल वाक्य रचना -> आसान पार्स (तेज पार्स)
इस सवाल का

अपने मूल जवाब में है, JSON का मेरा दृश्य जावास्क्रिप्ट का था, मैंने इसे एक करीबी रिश्तेदार माना। लेकिन JSON कुछ स्वतंत्र है और JSON.org JSON का वर्णन करने का एक अच्छा काम करता है। यह जावास्क्रिप्ट के लिए एक संगतता लाइब्रेरी भी प्रदान करता है जो ब्राउज़र द्वारा समर्थित नहीं होने पर JSON.parse और JSON.stringify के लिए समर्थन जोड़ता है।

जबकि eval समय में (2009 के मध्य) जावास्क्रिप्ट का मूल्यांकन किया गया था, यह भी JSON, अर्थात पार्स JSON का मूल्यांकन कर सकता है, लेकिन यह असुरक्षित माना जाता था, के रूप में यह मनमाना जावास्क्रिप्ट, उसके जगह में निष्पादित करने के लिए अनुमति देने के लिए किया था।

जेएसओएन ब्राउज़र के लिए बहुत अच्छा फिट और जावास्क्रिप्ट के साथ घनिष्ठ संबंध के कारण मंच विकसित करने का एक प्राकृतिक तरीका है।

जबकि एक्सएमएल को इस तथ्य के कारण बेहतर कठोरता माना जा सकता है कि आप इसे टाइप कर सकते हैं, यह भी चीजें हैं जो इसे बहुत धीमी बनाती हैं (यह मेरी राय में थोड़ा सा वर्बोज़ भी है)। लेकिन अगर ऐसा कुछ है जो आप वास्तव में चाहते हैं, तो आपको इसका उपयोग करना चाहिए, एक्सएमएल समान रूप से सर्वव्यापी है।

मैं गतिशील या स्थिर टाइप किया पर एक वाद-विवाद में नहीं जाना होगा, लेकिन मैं यह कहना होगा। स्कीमा मुक्त डेटा के शीर्ष पर सामान जोड़ना वास्तव में आसान है और स्कीमा या स्कीमा के बावजूद सत्यापन करने के कई तरीके हैं।

+0

गतिशील सामग्री का प्रतिनिधित्व करने के लिए JSON XML से अधिक उपयुक्त कैसे है? – Guillaume

+1

@ जॉन: आप निष्पादन के साथ पार्सिंग मिश्रण कर रहे हैं। वे दो अलग जानवर हैं। – dirkgently

+1

@ गुइलाइम और डार्कर्जली - जेएसओएन ब्राउज़र स्क्रिप्टिंग के साथ संयोजन के साथ काम करने के लिए बहुत आसान है। ग्राहक को डेटा धक्का देने के लिए अधिक उपयुक्त। मुझे जेएसओएन के बारे में विशेष जावास्क्रिप्ट के रूप में सोचना पसंद है क्योंकि यह मुझे अलग-अलग कोड से व्यवहार छोड़ने देगा जो एक्सएमएल के साथ साफ नहीं है। –

1

आप JSON: The Fat-Free Alternative to XML से पढ़ सकते हैं। JSON के साथ आप अनुरोध के स्रोत और गंतव्य के बीच कॉलबैक के साथ बेवकूफ़ बना सकते हैं और वास्तव में इसे अपने मौजूदा जावास्क्रिप्ट कोड में दर्द रहित तरीके से उपयोग कर सकते हैं।

+0

लिंक टूटा हुआ है (कम से कम मेरे लिए .. ।) –

+0

@ido: json.org – dirkgently

1

लिंक dirkgently प्रदान करता मतभेद का एक अच्छा सारांश (नीचे स्क्रॉल करें) है। महत्वपूर्ण अंक हैं:

JSON: छोटा, सभी यूनिकोड वर्णों का प्रतिनिधित्व कर सकता है (xml कम से कम, अपने स्वयं के spec द्वारा, यूटीएफ 8 में नहीं हो सकता है)। AJAX अनुप्रयोगों में इसका उपयोग करने के लिए यह भी छोटा है (जावास्क्रिप्ट के eval() फ़ंक्शन के कारण), विशेष रूप से जेसनपी (प्रतिक्रियाएं कॉलबैक का आह्वान) जैसी अधिक उन्नत सुविधाएं।

एक्सएमएल: इसकी संरचना आसान क्वेरी करने के लिए टूल के बहुत सारे है। चूंकि इसकी पुरानी और अधिक स्थापित होने के बाद, इसमें सामान्य रूप से अधिक टूल समर्थन भी है।

सामान्य रूप से, वे वही चीज़ें पूरा कर सकते हैं (आप xmlp को xml के माध्यम से कर सकते हैं, इसे केवल कॉलबैक को मैन्युअल रूप से पार्स करने की आवश्यकता होगी)।

+0

मैं आपके बयान से सहमत नहीं हूं कि एक्सएमएल सभी यूनिकोड वर्णों का प्रतिनिधित्व नहीं कर सकता है। आप बस एन्कोडिंग को यूनिकोड ("यूटीएफ -16") पर सेट करते हैं। देखें: http://www.w3schools.com/xml/xml_encoding.asp – MikeTeeVee

+0

वाह, यह थोड़ी देर पहले है :)। एक्सएमएल में स्पष्ट रूप से वर्जित वर्ण नहीं हैं? मुझे यकीन है कि utf16 के बारे में निश्चित नहीं है, निश्चित रूप से उन और utf8 के बीच कुछ ओवरलैप याद रखें। मैंने अपना जवाब अपडेट करने के लिए अद्यतन किया है कि कम से कम, utf8 में। –

8

आप इस लेख "The AJAX response: XML, HTML, or JSON?" उस विषय पर एक पूर्ण बहस में है:

एक्सएमएल

  • लाभ
    एक्सएमएल का सबसे महत्वपूर्ण लाभ यह है कि यह सबसे अधिक है अन्य मनुष्यों के लिए आसानी से पठनीय प्रारूप।
    एक माध्यमिक लाभ यह है कि एक्सएमएल काफी समय से आसपास रहा है और कई डेवलपर्स पहले ही इसका आदी हैं।
  • नुकसान
    एचटीएमएल पेज में डेटा डालने के लिए आवश्यक जावास्क्रिप्ट काफी वर्बोज़ है।

JSON

  • लाभ
    सबसे महत्वपूर्ण लाभ यह है कि JSON जावास्क्रिप्ट का एक ही स्रोत नीति में गतिरोध उत्पन्न, यदि आप एक नया <script> टैग के रूप में JSON फ़ाइल आयात है। गोर विवरण के लिए Simon Willison's example देखें।
    जावास्क्रिप्ट आपको दस्तावेज़ों तक पहुंचने की अनुमति नहीं देता है (वे XML या HTML हो) जो किसी अन्य सर्वर से आते हैं। हालांकि, यदि आप एक JSON फ़ाइल को स्क्रिप्ट टैग के रूप में आयात करते हैं तो आप इस समस्या को बाधित करते हैं, और किसी भी JSON डेटा को किसी भी वेबसाइट में आयात किया जा सकता है। यह आपके व्यावसायिक लक्ष्यों पर निर्भर करता है कि यह एक अच्छी या बुरी बात है, लेकिन अभी यह एकमात्र डेटा प्रारूप है जो अप्रतिबंधित पहुंच की अनुमति देता है।
    एक माध्यमिक लाभ यह है कि JSON डेटा के लिए स्क्रिप्ट्स XML डेटा के लिए स्क्रिप्ट की तुलना में शेष जावास्क्रिप्ट भाषा के साथ थोड़ा सा सरल और थोड़ा अधिक हैं।
  • नुकसान
    JSON का सबसे महत्वपूर्ण नुकसान यह है कि प्रारूप मनुष्य के लिए पढ़ने के लिए बहुत कठिन है, और कहा कि, ज़ाहिर है, हर एक अल्पविराम, बोली, और ब्रैकेट बिल्कुल सही जगह में होना चाहिए। हालांकि यह एक्सएमएल के बारे में भी सच है, डेटा स्निपेट के अंत में जटिल दिखने वाले सिंटैक्स के जेएसओएन का स्वागतकर्ता}}]}, नए शौक को डरा सकता है और जटिल डीबगिंग कर सकता है।

टिप्पणियों से, जेएसओएन को एक्सएमएल की तुलना में प्रक्रिया के लिए तेज़ी से माना जाता है।

+0

डीओएम में एक्सएमएल भरने का कोई कारण नहीं है, अगर सर्वर पक्ष पर डिज़ाइन उस व्यवहार को ध्यान में रखता है। सर्वर पक्ष पर एक छोटा सा डिज़ाइन काम ब्राउज़र पक्ष के प्रयास को बहुत कम कर सकता है। –

+0

इस तरह के एक हास्यास्पद बिंदु; इंसानों के लिए जेएसओएन पढ़ना मुश्किल है? क्या आप गंभीरता से इसे उत्तर के रूप में उपयोग कर रहे हैं? इंसानों के लिए जेएसओएन एक्सएमएल से अविश्वसनीय रूप से अधिक आसान है; सार्वभौमिक तथ्य मैं विश्वास नहीं कर सकता कि कथन कितना बेवकूफ़ है! – TheBlackBenzKid

17

एक्सएमएल का एक फायदा मैंने चर्चा में सोफर देखा है कि एक्सएमएल में स्कीमा हो सकती है। एक्सएमएल की संरचना का वर्णन करने में यह बहुत महत्वपूर्ण है। सरल डेटा संरचना के लिए, जेएसओएन और कुछ पाठ जो आप कर रहे हैं उसका वर्णन करना ठीक है। अधिक जटिल डेटा संरचनाओं के साथ काम करते समय, या जब निर्माता और डेटा के उपभोक्ता एक ही टीम नहीं होते हैं, तो स्कीमा संचार को बहुत मदद कर सकती है।

इसके अलावा, एक स्कीमा होने का मतलब है कि आप अपने डेटा को मान्य कर सकते है, जो जीवन को बचाने जब Complexe त्रुटियों डिबग करने के लिए कोशिश कर रहा हो सकता है ...

+0

स्कीमा हमेशा सख्ती से जरूरी नहीं है, विशेष रूप से NoSQL के लिए काम कर रहा है! –

2

मैं Json पसंद है और यह सिफारिश करेंगे, वहीं मुझे लगता है कि यह है कि वहाँ कोई इष्टतम प्रसंस्करण गति के बीच मौलिक अंतर। पुस्तकालयों और प्लेटफार्मों के बीच मतभेद अधिक महत्वपूर्ण हैं: एक अच्छा एक्सएमएल पार्सर खराब जेसन पार्सर से भी तेज है और इसके विपरीत। इसलिए आमतौर पर स्वरूपों का प्रदर्शन स्वयं एक बड़ा कारक नहीं है। दोनों तेजी से प्रकाश डाल सकते हैं (जावा के लिए दोनों के लिए कुछ अच्छे पार्सर हैं, उदाहरण के लिए, अन्य भाषाएं भी संभवतः)।

कॉम्पैक्टनेस के रूप में, यह डेटा के प्रकार पर निर्भर करता है, जेसन अक्सर थोड़ा अधिक कॉम्पैक्ट होता है, लेकिन मूल रूप से ऐसा नहीं होता है। सिवाय इसके कि आपके पास बहुत सारे सरणी/सूचियां हैं, जहां जेसन नोटेशन "{...}" xml टैगिंग से अधिक कॉम्पैक्ट है (जब तक आप संभवतः सफेद स्थान का उपयोग नहीं करते हैं, जैसे "1 2 3 4")।

5

एक्सएमएल का एक लाभ जिसका अभी तक उल्लेख नहीं किया गया है यह है कि एक्सएसएलटी का उपयोग एक्सएमएल दस्तावेज़ से डेटा को निकालने के लिए मनमाने ढंग से जटिल XPath अभिव्यक्तियों का उपयोग करना संभव है। मैं JSON में ऐसा करने का कोई तरीका नहीं देख सकता। आप JSON दस्तावेज़ में सभी ऑब्जेक्ट्स को कैसे प्राप्त करेंगे जिसमें "मुद्रा" फ़ील्ड प्रत्यक्ष वंशज के रूप में हो, भले ही ऑब्जेक्ट्स संरचना में हों? एक्सएसएलटी/XPath के साथ एक्सएमएल में यह बहुत आसान है।

हालांकि, ब्राउज़र में ऐसा करने से कीमत पर आता है। आप ब्राउज़र-विशिष्ट क्विर्क में भाग लेंगे, और यह शायद धीमा और अधिक स्मृति गहन होगा।

+1

* "आप जेएसओएन दस्तावेज़ में सभी ऑब्जेक्ट्स को कैसे प्राप्त करेंगे जिसमें" मुद्रा "फ़ील्ड प्रत्यक्ष वंशज के रूप में हो, भले ही ऑब्जेक्ट्स संरचना में हों?" * उसी तरह एक एक्सएसएलटी ट्रांसफार्मर संरचना को चलकर करता है और उन्हें खोजना सिर्फ इसलिए कि एक ज्ञात JSON ट्रांसफार्मर नहीं है इसका मतलब यह नहीं है कि ऐसा नहीं हो सकता है, या यह XML संस्करण की तुलना में कम उपयोगी होगा। –

0

मुझे लगता है कि जेसन का एक और फायदा यह है कि यह <> ब्रैकेट का उपयोग नहीं करता है और आप बिना किसी भ्रम के एचटीएमएल कोड डाल सकते हैं।

0

JSON हल्के, AJAX के अनुकूल (जावास्क्रिप्ट के सबसेट के रूप में माना जाता है) और आसानी से serializable है। एक्सएमएल यह सब कुछ करें लेकिन कुछ दूध पीने के बाद।

संबंधित मुद्दे