Gson का उपयोग करके Android में @SerializedName एनोटेशन का मूल उद्देश्य क्या है


110

@SerializedNameGson का उपयोग करके Android में एनोटेशन का मूल उद्देश्य क्या है ?

मुझे कुछ अलग उदाहरण दें। मैं इसका उपयोग करने का मुख्य उद्देश्य नहीं समझ सकता।


जावदोक क्या कहता है?
सोतीरियोस डेलिमोलिस

मैं नहीं समझ सकता कि क्या कहते हैं?
मुहम्मद अली

यह प्रॉपर्टी इंडेंटिफायर की पहचान करेगा जिसके लिए यह प्रॉपर्टी जोंस डेटा से संबंधित है
अमृत ​​बिदरी

जवाबों:


254

जावा वर्ग उदाहरण,

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
@MuhammadAli आपकी मदद करने के लिए मेरी खुशी। आप मुझे श्रेय भी दे सकते हैं और मेरे प्रिय उत्तर को स्वीकार करें :)
चिंतन राठौड़

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

4
अच्छा उत्तर .... इस बिंदु पर अधिकार .... उदाहरण के Jsonलिए सहायक था
देवराठ

खुशी है कि यह मदद की। :)
चिंतन राठौड़

1
वास्तव में उपयोगी !! ; बहुत बहुत धन्यवाद :) @ChintanRathod
इमरान 14

64

यहां पहले से ही कुछ उत्तर हैं, लेकिन मैं यह जोड़ना चाहूंगा कि यदि आप ProGuardअपने कोड का उपयोग कर रहे हैं और @SerializedName("name")अपने मॉडल वर्ग में उपयोग नहीं करते हैं , तो आपका GSON काम नहीं करेगा। कहानियो के कारण, अपने चर नाम से परिवर्तित हो सकता है क्योंकि String nameके लिए String aटूट GSON पार्स करने के रूप में GSON कुंजी के लिए दिखेगा में जिसके परिणामस्वरूप ajson में और यह असफल हो जायेगी।

निर्दिष्ट करके @SerializedName, GSON चर नाम के आधार पर json में नहीं दिखेगा और केवल निर्दिष्ट का उपयोग करेगा @SerializedName

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


1
Gr8 जानकारी, मैं मॉडल की बात न मानने के लिए प्रज्ञा को बताता था। अब, इसके साथ मैं कर सकता हूं। :)
अकाशापत्र

1
यह बहुत महत्वपूर्ण है। 2 घंटे खो दिए और हर जगह @SerializedName जोड़ दिया।
अभिजीत कुराने

2

आप कक्षा के शीर्ष पर @Keep को निर्दिष्ट करके अपने डेटा वर्गों को बाधित न करने के लिए प्रोगार्ड को निर्देश दे सकते हैं। यह न तो आपकी कक्षा को हटाएगा और न ही बाधित करेगा। यदि फ़ील्ड नाम इसके लिए उपयोग की जा रही कुंजी के समान है, तो प्रत्येक और प्रत्येक क्षेत्र में स्पष्ट रूप से @SerializedName जोड़ने की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.