2010-03-23 12 views
9

मुझे पता है कि एंड्रॉइड में एक जेएसओएन पार्सर बेक किया गया है लेकिन मैं सोच रहा था कि यह बेहतर प्रदर्शन की पेशकश करने योग्य था (जैसे जैक्सन - http://jackson.codehaus.org/ देखें)? किसी ने कोशिश की?बेहतर प्रदर्शन के लिए मानक एंड्रॉइड JSON पार्सर बदलें?

+0

मैं Android के JSON पार्सर की गति के साथ मुद्दों था कभी नहीं किया है में एक stream json parser है। मुझे अपने ऐप्स में से एक में 41kb JSON फ़ाइल भी मिली है, और यह एक G1 पर कुछ सौ एमएस में लोड होता है (जो ठीक है, क्योंकि इसे केवल ऐप बूट होने पर ही चलाने की आवश्यकता होती है)। –

+0

पूर्ण बोलने की गति स्वीकार्य हो सकती है। यह अभी भी अच्छा है कि नियमित डेस्कटॉप सीपीयू पर, जेएसओएन पार्सिंग गति मेग्स के दसियों के क्रम में है - 41 केबी फाइल मिलीसेकंड में या तो किया जाएगा।यहां तक ​​कि धीमी सीपीयू एंड्रॉइड सिस्टम को भी अक्सर दिया जाता है, तेजी से विकल्पों के सापेक्ष एक सौ मिलीसेकंड धीमा है। तो, नौकरी के लिए सही उपकरण। आकस्मिक उपयोग के लिए (स्टार्टअप पर कॉन्फ़िगरेशन फ़ाइल में पढ़ने की तरह) इन-निर्मित हैंडलर आमतौर पर सभ्य होते हैं। यह जानना अभी भी अच्छा है कि यदि मामलों का उपयोग करने की मांग की जाती है तो सुधार के लिए जगह है। – StaxMan

उत्तर

7

ठीक है, links हैं जो मौजूदा JSON, SAX, और प्रोटोकॉल बफर के साथ जैक्सन JSON प्रदर्शन की तुलना में हैं। लेखक के मुताबिक, जैक्सन एसएएक्स या अंतर्निहित जेएसओएन और प्रोटोकॉल बफर के बराबर है। वह अंतिम भाग थोड़ा संदिग्ध लगता है, लेकिन, भले ही यह निश्चित रूप से जैक्सन एंड्रॉइड पर काम करता है और कुछ प्रयोग के लायक हो सकता है।

मैंने हालांकि, JAR आकार की जांच नहीं की है। यदि यह बहुत बड़ा है, जब तक कि आप अतिरिक्त JSON प्रदर्शन के लिए मर नहीं रहे थे, तो यह स्पेस हिट के लायक नहीं हो सकता है।

+0

हां, फ़ाइल आकार निश्चित बाधाओं की मेरी सूची में निश्चित रूप से है। मुझे लगता है कि अगर मैं अपने ऐप में बहुत सारे JSON के माध्यम से चबाने वाला था, तो यह जैक्सन जोड़ने के लायक हो सकता है, लेकिन अब के लिए मानक JSON के साथ बीमार रहना। – Eno

4

देर उत्तर लेकिन यह अभी भी मदद कर सकता है। मैं ट्विटर से जेएसओएन पार्सिंग के साथ जैक्सन का उपयोग कर रहा हूं और डेटाबेस में Maps जारी रख रहा हूं। जैक्सन में डेटा मैपिंग बस अद्भुत है। सीधे किसी ऑब्जेक्ट पर जेएसओएन को मैप करने में सक्षम होना बहुत ही बढ़िया है और सब कुछ क्लीनर बनाता है।

भले ही आप केवल सरल उत्तरों का विश्लेषण कर रहे हैं डेटा मैपिंग से आप अपना कोड क्लीनर (और अधिक कुशल) बना सकते हैं। मेरे लिए यह देवता है कि मुझे हर प्रकार के ट्विटर एपीआई फ़ंक्शन के लिए पार्सिंग तर्क लिखना नहीं है।

+0

उस प्रतिक्रिया के लिए धन्यवाद - यदि आवश्यक हो तो छाती में एक और उपकरण होना अच्छा है। – Eno

0

इन पार्सर्स पर बस एक और परिप्रेक्ष्य। मैं 200 9 के लिए Google आईओ देख रहा था और ऐप डेवलपर्स के लिए बैटरी के कुशल उपयोग के बारे में वास्तव में अच्छी बात है। link

अब एंड्रॉयड के लिए बात करते हैं इनबिल्ट पादरी के अनुसार पेड़ आधारित है और इन जब यह बैटरी जीवन की बात आती है अक्षम होने की अपेक्षा की जाती है:

यहाँ कि बात करने के लिए कड़ी है। क्या किसी ने वास्तव में इसमें देखा है।

इस चर्चा के माध्यम से पढ़ना ऐसा लगता है कि जैक्सन पार्सर सबकुछ में विजेता प्रतीत होता है। अगर यह अंतर्निहित एक से अधिक नहीं है और इसके इवेंट/स्ट्रीम पेड़ के विपरीत आधारित है जो बैटरी उपयोग के मामले में बेहतर है।

बस एक हालांकि मैं साझा करना चाहता था और इस पर कुछ राय प्राप्त करना चाहता था।

0

मैं अपने एंड्रॉइड एप्लिकेशन को लागू करने के लिए जैक्सन जेसन का उपयोग करता हूं जो सर्वर के साथ जेसन-आरपीसी के माध्यम से संचार करता है। मैं डेटा को स्थानांतरित करने के लिए जेसन-आरपीसी अनुरोधों और प्रतिक्रियाओं और वस्तुओं को क्रमबद्ध/deserialize करने के लिए इसका उपयोग करना चाहता था। मैं जैक्सन-जेसन के 2.0 संस्करण का उपयोग करता हूं। मैंने अपने निर्माण पथ में दो जार लगाए हैं: जैक्सन-डाटाबेस-2.0.0.जर, जैक्सन-कोर-2.0.0.जर और जैक्सन-एनोटेशन-2.0.0.jar।

साइड नोट पर: क्या एंड्रॉइड के लिए कोई जेसन-आरपीसी कार्यान्वयन है। अलग जेसन-आरपीसी और http यातायात अच्छा होगा। मैंने बहुत कुछ googled है, bu अच्छा जेसन-आरपीसी जेनरेटर, जेसन serializer/deserializer नहीं मिला है और परिवहन के लिए मैं एंड्रॉइड-क्वेरी के साथ जाऊंगा।

5

11 एपीआई के बाद से, एंड्रॉयड

+0

धन्यवाद! मैंने यह नहीं देखा कि वह वहां था क्योंकि यह JSON पैकेज में नहीं था – christophercotton