GSON केवल फ़ील्ड (निजी, सार्वजनिक, संरक्षित) का उपयोग क्यों करता है ? क्या जीएसओएन को केवल गेटर्स और सेटर का उपयोग करने के बारे में बताने का कोई तरीका है?
जवाबों:
सामान्यतया जब आप किसी वस्तु को क्रमबद्ध / डिस्क्राइब करते हैं, तो आप वस्तु की स्थिति की सटीक प्रतिलिपि के साथ समाप्त करने के लिए ऐसा कर रहे हैं; जैसे, आप आम तौर पर OO डिज़ाइन में वांछित एनकैप्सुलेशन को दरकिनार करना चाहते हैं। यदि आप इनकैप्सुलेशन को दरकिनार नहीं करते हैं, तो एक ऑब्जेक्ट के साथ समाप्त करना संभव नहीं हो सकता है, जो कि डीरिएरलाइज़ेशन के बाद ठीक वैसी ही स्थिति है जैसा कि धारावाहिकीकरण से पहले था। इसके अतिरिक्त, उस मामले पर विचार करें जहां आप किसी विशेष संपत्ति के लिए एक सेटर प्रदान नहीं करना चाहते हैं। यदि आप गेटर्स और सेटर के माध्यम से काम कर रहे हैं तो धारावाहिकीकरण / विचलन कैसे होना चाहिए?
transient
ताकि वे क्रमबद्ध न हों, और अनुरोध पर पुनर्गणना हो।
क्या जीएसओएन को केवल गेटर्स और सेटर का उपयोग करने के लिए बताने का कोई तरीका है?
अभी नहीं।
से डिज़ाइन दस्तावेज़ :
[टी] यहाँ गुणों का समर्थन करने के लिए अच्छे तर्क हैं। हम जसन क्षेत्रों को इंगित करने के लिए वैकल्पिक मानचित्रण के रूप में गुणों का समर्थन करने के लिए एक बाद के संस्करण में Gson को बढ़ाने का इरादा रखते हैं। अभी के लिए, Gson फ़ील्ड-आधारित है।
हमारे ऐप में यह कैसे काम करता है इसकी अस्पष्ट रूपरेखा है कि हमारे पास बहुत सारे TypeAdapter
कार्यान्वयन हैं - कुछ विशिष्ट मूल्य जैसी वस्तुओं के लिए और कुछ बीन-स्टाइल ऑब्जेक्ट्स के लिए जहां हम जानते हैं कि JavaBeans लॉजिक काम करेगा। फिर हम ऑब्जेक्ट GsonBuilder
बनाने से पहले इन सभी को जाम कर देते हैं Gson
।
दुर्भाग्य से, जीएसओएन वास्तव में जैसे प्रकार से निपटने में बकवास है Object[]
। हमने ज्यादातर यह देखा जब हम विधि मापदंडों का प्रतिनिधित्व करने के लिए एक JSON ऑब्जेक्ट बनाने की कोशिश कर रहे थे। इसके लिए वर्कअराउंड कस्टम TypeAdapter
इंस्टेंसेस बनाना था जो तरीकों को दर्शाते हैं। (इसका मतलब यह है कि आप Gson
कॉल करने का इरादा प्रति विधि एक उदाहरण का उपयोग करके समाप्त करते हैं ...)