Quel est le but de base de l' @SerializedNameannotation dans Android avec Gson?
Donnez-moi quelques exemples différents. Je ne comprends pas l'objectif principal de son utilisation.
Quel est le but de base de l' @SerializedNameannotation dans Android avec Gson?
Donnez-moi quelques exemples différents. Je ne comprends pas l'objectif principal de son utilisation.
Réponses:
Exemple de classe Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Cette classe comporte 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 serialisinget deserialisingobjets. Par exemple, le champ Java personName est représenté sous forme de nom dans JSON.
Exemple JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Jsonétait utile
Il y a déjà quelques réponses ici, mais j'aimerais ajouter que si vous utilisez ProGuardpour masquer votre code et ne l'utilisez pas @SerializedName("name")dans votre classe de modèle, votre GSON ne fonctionnera pas. Parce qu'en raison de l'obfuscation, vos noms de variables peuvent avoir changé de String nameà, String ace qui entraîne une analyse GSON cassée car GSON recherchera la clé adans json et cela échouera.
En spécifiant @SerializedName, GSON ne recherchera pas dans json en fonction du nom de la variable et utilisera simplement spécifié @SerializedName.
Bien sûr, vous pouvez dire à proguard de ne pas obscurcir votre modèle, mais si vous souhaitez que le modèle soit obscurci, vous devez spécifier @SerializedName
Vous pouvez demander à Proguard de ne pas masquer vos classes de données en spécifiant @Keep en haut de la classe. Cela ne supprimera ni n'obscurcira votre classe. Pas besoin d'ajouter @SerializedName à chaque champ explicitement si le nom du champ est similaire à la clé Json utilisée pour lui.