Quel est le but de base de @SerializedName annotation dans android en utilisant GSon

est-ce que n'importe qui peut me dire quel est le but de base de @SerializedName annotation dans android en utilisant GSON

Donnez-moi un autre exemple. J'ai vérifié dans le site Web différent, mais je ne peux pas comprendre ce qui est le but principal de l'utiliser.

60
demandé sur Chintan Rathod 2015-03-10 09:18:33

2 réponses

exemple de classe Java,

public class Person {

    @SerializedName("name")
    private String personName;

    @SerializedName("bd")
    private String birthDate;

}

cette classe comprend deux champs qui représentent le nom de la personne et la date de naissance d'une personne. Ces champs sont annotés avec l'annotation @SerializedName . Le paramètre (valeur) de cette annotation est le nom à utiliser pour les objets serialising et deserialising . Par exemple, le champ Java nom est représenté par nom dans JSON.

exemple JSON,

{
    "name":"chintan",
    "bd":"01-01-1990"
}
170
répondu Chintan Rathod 2015-03-10 06:42:33

il y a déjà peu de réponses ici,mais je voudrais ajouter que si vous utilisez ProGuard pour brouiller votre code et ne pas utiliser @SerializedName("name") dans votre classe de modèle, alors votre GSON ne fonctionnera pas. Parce qu'en raison de l'obscurcissement, vos noms de variables pourraient avoir changé de String name à String a résultant en une analyse de Gson cassée comme Gson va chercher la clé a dans json et il échouera.

en spécifiant @SerializedName , GSON ne regardera pas dans JSON basé sur le nom de la variable & va juste utiliser spécifié @SerializedName .

bien sûr, vous pouvez dire à proguard de ne pas brouiller votre modèle, mais si vous voulez que le modèle soit brouillé, alors vous devez spécifier @SerializedName

"
18
répondu Sandip Soni 2017-09-01 06:15:14