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.
@MuhammadAli c'est mon plaisir de vous aider. Vous pouvez également me donner crédit par vote positif et accepter la réponse mon cher :)
Chintan Rathod
3
Électeurs négatifs, veuillez ajouter votre commentaire afin que je puisse comprendre le but du vote négatif et que je puisse améliorer ma réponse à partir de là .. :)
Chintan Rathod
4
Bonne réponse ... Droit au but ... Exemple avec Jsonétait utile
Devrath
Heureux que cela ait aidé. :)
Chintan Rathod
1
Très utile!! ; Merci beaucoup :) @ChintanRathod
Imran
64
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
Gr8 info, j'avais l'habitude de dire à proguard de ne pas masquer les modèles. Maintenant, avec cela, je peux le faire. :)
akashPatra
1
C'est très très important. J'ai perdu 2 heures et j'ai ajouté @SerializedName partout.
Abhijit Kurane
2
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.
Réponses:
Exemple de classe Java,
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
serialising
etdeserialising
objets. Par exemple, le champ Java personName est représenté sous forme de nom dans JSON.Exemple JSON,
la source
Json
était utileIl y a déjà quelques réponses ici, mais j'aimerais ajouter que si vous utilisez
ProGuard
pour 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é deString name
à,String a
ce qui entraîne une analyse GSON cassée car GSON recherchera la cléa
dans 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
la source
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.
la source