2009-07-12 11 views
29

मैं PHP के साथ कुछ डेटा जोड़ रहा हूं, मेरे पास जेसन और एक्सएमएल के बीच विकल्प है। लेकिन मुझे नहीं पता कि क्या चुनना है, मैंने कभी उनमें से किसी के साथ काम नहीं किया। तो मैं सबसे आसान चाहता हूँ।बेहतर क्या है: जेसन या एक्सएमएल (PHP)

मुझे आश्चर्य है कि क्या अच्छी कक्षाएं हैं जो पार्सिंग (एक्सएमएल या जेसन) को आसान बना सकती हैं।

मैं मुख्य रूप से गति और पैमाने के बजाय उपयोग की आसानी पर ध्यान केंद्रित करता हूं।

+0

हम कुछ के साथ JSON या XML में बात करने के लिए सभी प्रश्न यह सोचते हैं कि आप जा रहे हैं उत्तर दिया है ग्राहक का प्रकार यदि आप नहीं हैं (उदा।, आप "सामान्य" PHP ऐप की तरह उत्पाद HTML पर जा रहे हैं) तो आप इनमें से किसी एक का उपयोग नहीं करेंगे। या आप सर्वर पक्ष पर serializing के बारे में बात कर रहे हैं (उदाहरण के लिए, फाइलों के लिए) ... ??? –

+0

मैंने कहा कि मैं PHP के साथ डेटा में हेरफेर करने जा रहा हूं, मुझे नहीं पता कि क्यों सभी उलझन में थे और ग्राहक पक्ष के बारे में बात करते थे। सर्वर में कुछ डेटा है (कहीं से डाउनलोड किया गया है) और PHP का उपयोग करके इसका उपयोग करेगा, आसान क्या है। डेटा आकार में छोटा है, लेकिन संरचना में बहुत जटिल है, इसलिए मैं सबसे आसान बनाना चाहता हूं (जेसन या एक्सएमएल ??) –

+1

जेएसओएन और एक्सएमएल वे प्रारूप हैं जिनका उपयोग आप PHP प्रोसेसर से डेटा प्राप्त करने के लिए करेंगे। PHP में, आप सीधे PHP ऑब्जेक्ट्स का उपयोग करेंगे। क्या डेटा प्रदाता आपको इन दो प्रारूपों के बीच चयन करने के लिए मजबूर कर रहा है? अन्यथा आप PHP ऑब्जेक्ट सीरियलाइजेशन या डेटाबेस का उपयोग करेंगे, शायद। –

उत्तर

37

json.org JSON पार्स सरल बनाता है। SimpleXML PHP के लिए एक्सएमएल सरल बनाता है।

जब कोई चुनते हैं, तो यह वास्तव में आपके आवेदन पर निर्भर करता है। यदि आप क्लाइंट-साइड पर प्रोसेसिंग के लिए जावास्क्रिप्ट पर डेटा पास करेंगे, तो मैं JSON की अनुशंसा करता हूं। आईएमओ, एक्सएमएल सिस्टम के बीच डेटा इंटरचेंज के लिए बेहतर है क्योंकि यह बहुत अच्छी तरह से समझ में आता है और मानव पठनीय (आपके लिए व्याख्या करना आसान बनाता है)। जेएसओएन तार पर छोटा है, क्योंकि कोई बंद टैग नहीं है।

+2

जैसा मैंने कहा था। "यह वास्तव में निर्भर करता है" के लिए +1 –

+7

मैं "यह निर्भर करता है" से सहमत हूं, लेकिन मुझे नहीं लगता कि एक्सएमएल की तुलना में एक्सएमएल की कोई बढ़त wrt पठनीयता है; वे मोटे तौर पर समान हैं। जेएसओएन आकार का लाभ मौजूद है, लेकिन आमतौर पर इससे कोई फर्क नहीं पड़ता है: यदि आकार मायने रखता है, तो डेटा को gzipping डेटा उन्हें समान आकार (समान जानकारी सामग्री इत्यादि) बनाता है। व्यक्तिगत रूप से मैं उपकरण (आसानी से उपयोग) के आधार पर चयन करता हूं, लेकिन wrt PHP पर टिप्पणी नहीं कर सकता। जावा के लिए दोनों के लिए बहुत सारे टूल्स हैं, मुझे लगता है कि PHP के लिए भी यही सच है। – StaxMan

+0

इसे पढ़ें: http://www.edwardawebb.com/tips/xml-json यह नेटवर्किंग के बारे में अधिक है लेकिन यह आंशिक रूप से पार्सिंग पर भी लागू होता है। –

1

आप XML उपयोग SimpleXML चुनते हैं, तो एक बहुत ही सरल पुस्तकालय का उपयोग करने के

1

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

0

पर आसानी से जावास्क्रिप्ट में 'अनुवादित' किया जा सकता है json.org पृष्ठ के नीचे कई (शायद एक तरफा) JSON बनाम एक्सएमएल लेख हैं ।

यहां one है।

मैं आम तौर पर जेएसओएन पसंद करता हूं क्योंकि यह आम तौर पर प्रतिनिधित्व करने वाले डेटा के लिए बेहतर होता है, जो मेरी काम की रेखा में चरम, मेष आदि जैसी चीजें होंगी। आपके डेटा एक्सएमएल के आधार पर एक अच्छा प्रारूप हो सकता है।

1

मैं वजह से पीएचपी साथ JSON का उपयोग कितना आसान है: विचार करने के लिए

$arr = array('foo' => 'bar', 'animals' => array('cat', 'dog')); // Create any array. 
$json = json_encode($arr); // Converts any array to JSON. 
+1

क्या आप एक सरणी को एक्सएमएल में परिवर्तित नहीं कर सकते ?? –

+3

पूरी तरह से। xml_encode ($ var, false, "foo"); जहां $ var सरणी है, आईडी रेफ प्रदर्शित करने के लिए झूठी नहीं है, और "foo" XML रूट का नाम है। http://www.projectzero.org/sMash/1.0.x/docs/apidocs/PHP/xapidoc/XMLExtension/xml_encode.html –

3

एक बात यह है कि, कम से कम डाउनलोड पर, XML और JSON (एक्सएमएल बड़ा किया जा रहा है) के बीच आकार में अंतर नहीं है वास्तव में दिलचस्प है क्योंकि आप HTTP पर GZIP संपीड़न का उपयोग करेंगे।

यदि आप सुनिश्चित हैं कि आप जावास्क्रिप्ट के साथ काम करेंगे और कभी भी किसी अन्य प्रकार का क्लाइंट (कोई अन्य वेबसाइट, फ़्लैश/फ्लेक्स क्लाइंट, जो भी हो) नहीं है तो JSON बहुत अच्छा और शायद थोड़ा कम दर्द रहित है। दूसरी तरफ, एक्सएमएल करना अब आपको समय बचाता है, आपको कभी भी एक्सएमएल पर काम करने की ज़रूरत है।

वैसे भी, एक अच्छी बात यह है कि Google लोग जीमेल या उनके किसी भी ऐप्स के लिए LiveHTTPHeaders का उपयोग करके क्या कर रहे हैं, यह जांचें। मुझे पूरा यकीन है कि यह एक्सएमएल है और जेएसओएन नहीं है, लेकिन आप मुझे उस पर देख सकते हैं। सभी मामलों में, Google द्वारा किए जाने वाले कार्यों को "सोचने" के रूप में नहीं माना जा सकता है, लेकिन वे आम तौर पर मुझसे ज्यादा चालाक होते हैं और वैसे भी सोचने के लिए कई और व्यक्ति होते हैं :)

+0

आकार में अंतर ... वास्तव में दिलचस्प नहीं है << यह ओवरहेड प्रोसेसिंग कर रहा है। बड़ी फाइलों के लिए (एक्स जीबी) यह भी एक मुद्दा हो सकता है। मैंने Google XML ऐप्स के बहुत से "अनुबंध द्वारा डिज़ाइन" देखा है। मैं एक्सएमएल पसंद करते हैं। –

+0

हमम ... हाँ, अगर हम बड़ी फाइलों के बारे में बात कर रहे हैं, तो दुनिया स्पष्ट रूप से अनुभवजन्य हो जाती है: आपको परीक्षण करना और बेंचमार्क करना और मुझे लगता है कि एक सुराग प्राप्त करना है। जेएसओएन एक्सएमएल से demarshalling से स्पष्ट रूप से तेज है ... है ना? –

+1

"" जो कुछ भी करता है उसे "सोचने" के रूप में नहीं माना जा सकता है, लेकिन वे आम तौर पर मुझसे ज्यादा चालाक होते हैं और वैसे भी सोचने के लिए कई और व्यक्ति होते हैं :) " सत्य नहीं यह इस पर निर्भर करेगा कई चीजें, वे "बेस्ट" का चयन नहीं करते हैं, वे "जीमेल के लिए सर्वश्रेष्ठ एक" चुनते हैं –

3

यह निर्भर करता है।

उदाहरण: आप अपने आवेदन को एक बड़े संदर्भ (ईएआई) में रखना चाहते हैं, तो आपको एक्सएमएल (शायद वेबसाइट सर्विसेज & डब्लूएसडीएल) का उपयोग करना चाहिए।

उदाहरण 2: यदि आप जावास्क्रिप्ट और AJAX के आधार पर एक साधारण उपयोगकर्ता इंटरफ़ेस चाहते हैं तो आपको JSON पर विचार करना चाहिए।

जब आप जावास्क्रिप्ट के साथ काम करते हैं तो JSON सबसे उपयोगी होता है। ज्यादातर मामलों में एक्सएमएल पुस्तकालयों का उपयोग करना इतना आसान है, उपयोग की आसानी लगभग समान है।

4

JSON प्रोग्रामिंग भाषाओं से ज्ञात संरचनाओं के रूप में आपके डेटा को देखता है: मानचित्र/शब्दकोश (जिसे JSON में 'ऑब्जेक्ट' कहा जाता है), सरणी और अक्षर। जेएसओएन इन बुनियादी संरचनाओं को पदानुक्रमों में डालता है।

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

एक्सएमएल के पास बहुत सारे तैयार उपकरणों के साथ इसके चारों ओर विशाल पारिस्थितिकी तंत्र बनाया गया है: यह जांचने के लिए कि आपके एक्सएमएल दस्तावेज वैध, परिवर्तन भाषा, XPath आपके दस्तावेज़ को नेविगेट करने के लिए XPath हैं, आदि। इस क्षेत्र में JSON की कमी भी है।

एक्सएमएल हालांकि JSON से कहीं अधिक जटिल है। अपने स्वयं के JSON पार्सर को लिखना आसान और मजेदार है, लेकिन एक्सएमएल पार्सर लिखना huge undertaking है (निश्चित रूप से किसी ऐसे व्यक्ति के लिए नहीं जो एक्सएमएल के लिए नया है)। जावास्क्रिप्ट में, जेएसओएन को पाठ का मूल्यांकन करके पार्स किया जा सकता है (हालांकि यह बहुत असुरक्षित है)।

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

+0

क्या दोनों क्लाइंट (मूल रूप से सभी क्लाइंट) और सर्वर (PHP) पक्षों पर एक्सएमएल मैनिप्लेशंस के लिए libs नहीं हैं? –

+1

डैनियल, मुझे यकीन है कि वहाँ हैं। मेरे उत्तर पुस्तकालयों की तुलना में "जेएसओएन बनाम एक्सएमएल" पर अधिक ध्यान केंद्रित किया। मैं आमतौर पर जावा के साथ काम करता हूं, और जावा दुनिया में एक्सएमएल के लिए कई पुस्तकालय हैं। PHP में मैंने अपनी (सरल) ज़रूरतों के लिए SimpleXML का उपयोग किया, और यह अभी काम किया। –

+0

समझा, पीटर, मुझे लगता है कि मैं पूछ रहा था कि चौथा पैराग्राफ आपके जवाब में कैसे काम करता है। मैं आपके उत्तर को कुछ बार पढ़ने के बाद से ऊपर उठूंगा, मुझे एहसास हुआ कि आप वास्तव में कुछ महत्वपूर्ण बताते हैं: एक्सएमएल की पूरी दुनिया है (जैसा कि आप कहते हैं पारिस्थितिक तंत्र): JSON ऐसा नहीं लगता है। ऐसा नहीं है कि प्रश्नकर्ता परवाह है ... :) –

0

प्रारंभ करने वाला सबसे आसान एक्सएमएल है। इसका मुख्य कारण पार्सिंग नहीं है (क्योंकि एक्सएमएल और जेएसओएन के लिए बहुत अच्छी libs हैं जो आपके लिए यह करते हैं, अन्य पोस्ट देखें), लेकिन समझने योग्यता:

JSON कई अलग-अलग कोष्ठक के साथ काम करता है, जब देख रहा है आपके एक्सएमएल डेटा पर आप शायद किसी भी त्रुटि को तेजी से देखेंगे। (मान लें कि आप जानते हैं जैसे एचटीएमएल)

XML schema बनाने के लिए यह भी संभव है (लेकिन वैकल्पिक), जो आपके डेटा को स्वचालित रूप से आसान बनाता है। यह आपको बाद में बहुत समय बचा सकता है!

7

मुझे लगता है निम्नलिखित StackOverflow प्रविष्टियों सबसे अच्छा आपके प्रश्न का उत्तर:

के रूप में जो एक के लिए सबसे आसान है?
jQuery आपके जावास्क्रिप्ट ऑब्जेक्ट्स को JSON ऑब्जेक्ट्स में क्रमबद्ध करने में आसान बनाता है।

लेकिन, यदि आप अभी भी अनिश्चित हैं ...

यहाँ कुछ अन्य लेख हैं:

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