के बाद ऑब्जेक्ट निर्माण पूरा करना मैंने अपने एंड्रॉइड एप्लिकेशन में ऑब्जेक्ट्स के पदानुक्रम को क्रमबद्ध करने और डी-क्रमबद्ध करने के लिए जीएसओएन का सफलतापूर्वक उपयोग करना शुरू कर दिया है।जीएसओएन deserialization
वस्तुओं धारावाहिक की जा रही के कुछ सदस्यों जो मैं (या वैकल्पिक GSON एनोटेशन का उपयोग उन्हें धारावाहिक जा रहा है को रोकने के लिए अन्यथा) transient
के रूप में चिह्नित करना होगा क्योंकि वे वस्तुओं के लिए संदर्भ है कि मैं उत्पादन JSON के हिस्से के रूप को क्रमानुसार नहीं करना चाहते हैं स्ट्रिंग। वे संदर्भ उन वस्तुओं के लिए हैं जिन्हें अलग-अलग तरीकों से अलग किया जाना चाहिए।
एक बार जब संरचना जावा ऑब्जेक्ट्स में डी-सीरियलाइज्ड हो जाती है, तो किसी बिंदु पर मुझे उन संदर्भों को भरने की आवश्यकता होती है। मैं शायद setXXX()
प्रकार की विधियों की एक श्रृंखला का उपयोग करके आसानी से ऐसा कर सकता हूं, लेकिन जब तक यह नहीं किया जाता है, तो वे वस्तुएं अपूर्ण स्थिति में होती हैं। इसलिए मैं सोच रहा हूं कि इस पर एक और मजबूत दृष्टिकोण है या नहीं।
तरीके मैं अब तक के बारे में सोचा है
वस्तुओं फेंक है एक
RuntimeException
(या अधिक उपयुक्त कुछ) वे अपूर्ण स्थिति में कर रहे हैं; यानी, अगर उन्हें कुछ काम करने के लिए कहा जाता है जब कुछ प्रारंभिक विधि नहीं कहा जाता था।धारावाहिक बिट्स को अलग डेटा मॉडल ऑब्जेक्ट में अलग करें। दूसरे शब्दों में, उन सामानों को निकालें जिन्हें क्रमबद्ध नहीं किया जा सकता है। जीएसओएन डी-सीरियलाइजेशन के बाद, उन रचनाओं में उन डेटा ऑब्जेक्ट्स का उपयोग करके 'असली' ऑब्जेक्ट्स का निर्माण करें। यह कुछ हद तक जीएसओएन का उपयोग करने की सुविधा को हराने के लिए प्रतीत होता है।
उन वस्तुओं के विशेष निर्माण को संभालने के लिए जीएसओएन के लिए एक कस्टम deserializer लिखें।
बहुत धन्यवाद। मुझे लगता है कि मुझे यह दूसरा दृष्टिकोण लेना चाहिए क्योंकि एक और चिंता यह है कि मेरा जेएसओएन आउटपुट वर्तमान में वास्तविक वर्ग कार्यान्वयन के साथ बहुत कसकर है, और मैं संस्करण के बारे में भी चिंतित हूं (अगर JSON फ़ाइल एक नए ऐप में लोड हो जाती है तो यह गन्दा हो सकता है वेशन जहां वर्ग संरचनाएं बदल गई हैं)। दृढ़ता के उद्देश्य के लिए 'मॉडल' कक्षाओं के पेड़ पर एप्लिकेशन कक्षाओं को मैप करना यह सब हल करने का एक अच्छा तरीका प्रतीत होता है।मूर्ख सवाल, लेकिन वास्तविक वर्किंग क्लास और डेटा मॉडल क्लास के बीच अंतर करने के लिए आप किस शब्दावली का उपयोग करेंगे? – Trevor
शायद व्यूमोडेल, या पर्सिस्टेंस मॉडेल, या सीरियलाइज्ड मॉडल, या जेसनमोडेल, या इंटीग्रेशन मॉडेल, या सर्विसमोडेल, या कुछ और। –