Quel est l'objectif de base de @ SerializedName annotation dans Android utilisant Gson
Donnez-moi des exemples différents. Je ne peux pas comprendre le but principal de l'utiliser.
Exemple de classe Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Cette classe a 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 lorsque serialising
et deserialising
objets. Par exemple, le champ Java) personName est représenté par name en JSON.
Exemple JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Il y a déjà peu de réponses ici, mais je voudrais ajouter que si vous utilisez ProGuard
pour dissimuler votre code et n'utilisez pas @SerializedName("name")
dans votre classe de modèle, votre GSON a gagné ' t fonctionne. En raison de l'obscurcissement, les noms de vos variables pourraient avoir changé de String name
À String a
, Entraînant ainsi une analyse GSON cassée, car GSON recherchera la clé a
dans json et échouera.
En spécifiant @SerializedName
, GSON ne cherchera pas dans json en fonction du nom de la variable et utilisera simplement le @SerializedName
Spécifié.
Bien sûr, vous pouvez indiquer à proguard de ne pas masquer votre modèle, mais si vous souhaitez que le modèle soit masqué, vous devez spécifier @SerializedName
.
Vous pouvez indiquer à Proguard de ne pas masquer vos classes de données en spécifiant @Keep au-dessus de la classe. Cela ne supprimera ni n'obscurcira votre classe. Il n'est pas nécessaire d'ajouter @SerializedName à chaque champ explicitement si le nom du champ est similaire à la clé Json utilisée pour cela.