2015-03-10 10 views
45

का उपयोग करके android में @SerializedName एनोटेशन का उद्देश्य है। मैंने अलग-अलग वेबसाइट में चेक किया है लेकिन मैं समझ नहीं पा रहा हूं कि इसका उपयोग करने का मुख्य उद्देश्य क्या है।क्या बुनियादी किसी को भी मुझे बता सकते हैं क्या एंड्रॉयड में <strong>@SerializedName</strong> एनोटेशन का मूल उद्देश्य <strong>GSON</strong></p> <p>का उपयोग कर मुझे कुछ अलग उदाहरण दें है GSon

+0

जावाडोक क्या कहता है निर्दिष्ट करना होगा? –

+0

मुझे समझ में नहीं आता कि क्या कह रहे हैं? –

+0

यह संपत्ति इंडेंटिफायर की पहचान करेगा जिसमें यह संपत्ति जेसन डेटा –

उत्तर

123

जावा वर्ग उदाहरण के लिए,

public class Person { 

    @SerializedName("name") 
    private String personName; 

    @SerializedName("bd") 
    private String birthDate; 

} 

इस वर्ग के दो क्षेत्रों है कि व्यक्ति का नाम और एक व्यक्ति की जन्म तिथि का प्रतिनिधित्व करते है। इन क्षेत्रों को @SerializedName एनोटेशन के साथ एनोटेट किया गया है। इस एनोटेशन का पैरामीटर (मान) serialising और deserialising ऑब्जेक्ट्स का उपयोग करने वाला नाम है। उदाहरण के लिए, जावा फ़ील्ड व्यक्ति नाम JSON में नाम के रूप में दर्शाया गया है।

JSON उदाहरण के लिए,

{ 
    "name":"chintan", 
    "bd":"01-01-1990" 
} 
+2

मेरा समय बचाने के लिए बहुत बहुत धन्यवाद –

+1

@ मुहम्मद अहमली आपकी मदद करने के लिए मेरी खुशी है। आप मुझे अपवोट द्वारा क्रेडिट भी दे सकते हैं और मेरे प्रिय उत्तर स्वीकार कर सकते हैं :) –

+2

नकारात्मक मतदाता, कृपया अपनी टिप्पणी जोड़ें ताकि मैं समझ सकूं कि वोट का उद्देश्य क्या है और मैं अपना जवाब आगे बढ़ा सकता हूं .. :) –

4

वहां पहले से ही कुछ जवाब यहाँ हैं, लेकिन मैं, जोड़ने के लिए अपने मॉडल कक्षा में है कि यदि आप ProGuard उपयोग कर रहे हैं अपने कोड अंधेरा करना & @SerializedName("name") का उपयोग नहीं करते तो चाहते हैं अपने जीएसओएन काम नहीं करेगा। क्योंकि obfuscation के कारण, आपके परिवर्तनीय नाम String name से String a में बदल गए हैं जिसके परिणामस्वरूप जीएसओएन पार्सिंग टूटी हुई है क्योंकि जीएसओएन a को जेसन & में विफल कर देगा।

@SerializedName निर्दिष्ट करके, जीएसओएन वैरिएबल नाम & पर आधारित जेसन में नहीं देखेगा बस निर्दिष्ट @SerializedName का उपयोग करेगा।

कॉर्स आप ProGuard बता अपने मॉडल अस्पष्ट कर कर सकते हैं, लेकिन अगर आप मॉडल समझ से परे है चाहते हैं, तो आप @SerializedName

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