Diese Klasse verfügt über zwei Felder, die den Namen der Person und das Geburtsdatum einer Person darstellen. Diese Felder werden mit der Annotation @SerializedName versehen . Der Parameter (Wert) dieser Anmerkung ist der Name, der verwendet werden soll, wenn serialisingund deserialisingObjekte. Beispielsweise wird das Java-Feld personName als Name dargestellt in JSON .
@ MuhammadAli Es ist mir eine Freude, Ihnen zu helfen. Sie können mir auch durch Upvote Kredit geben und Antwort annehmen, meine Liebe :)
Chintan Rathod
3
Negative Wähler, bitte fügen Sie Ihren Kommentar hinzu, damit ich verstehen kann, was der Zweck der Abstimmung ist, und meine Antwort weiter verbessern kann. :)
Chintan Rathod
4
Gute Antwort .... Auf den Punkt gebracht .... Beispiel mit Jsonwar hilfreich
Devrath
Schön, dass es geholfen hat. :)
Chintan Rathod
1
Wirklich hilfreich!! ;; Vielen Dank :) @ChintanRathod
Imran
64
Hier gibt es bereits wenige Antworten, aber ich möchte hinzufügen, dass Ihr GSON nicht funktioniert , wenn Sie ProGuardIhren Code @SerializedName("name")verschleiern und nicht in Ihrer Modellklasse verwenden. Aufgrund der Verschleierung haben sich Ihre Variablennamen möglicherweise von String namezu geändert , String awas zu einer fehlerhaften GSON-Analyse geführt hat, da GSON nach Schlüsseln suchta für json und dieser fehlschlägt.
Durch die Angabe @SerializedNamesucht GSON nicht in json basierend auf dem Variablennamen und verwendet nur angegeben @SerializedName.
Natürlich können Sie proguard anweisen, Ihr Modell nicht zu verschleiern. Wenn Sie jedoch möchten, dass das Modell verschleiert wird, müssen Sie dies angeben @SerializedName
Gr8 Info, ich habe Proguard immer angewiesen, die Modelle nicht zu verschleiern. Damit kann ich jetzt tun. :)
akashPatra
1
Das ist sehr sehr wichtig. 2 Stunden verloren und @SerializedName überall hinzugefügt.
Abhijit Kurane
2
Sie können Proguard anweisen, Ihre Datenklassen nicht zu verschleiern, indem Sie @Keep über der Klasse angeben. Dadurch wird Ihre Klasse weder entfernt noch verschleiert. Es ist nicht erforderlich, jedem Feld explizit @SerializedName hinzuzufügen, wenn der Feldname dem dafür verwendeten Json-Schlüssel ähnelt.
Antworten:
Java-Klassenbeispiel,
Diese Klasse verfügt über zwei Felder, die den Namen der Person und das Geburtsdatum einer Person darstellen. Diese Felder werden mit der Annotation @SerializedName versehen . Der Parameter (Wert) dieser Anmerkung ist der Name, der verwendet werden soll, wenn
serialising
unddeserialising
Objekte. Beispielsweise wird das Java-Feld personName als Name dargestellt in JSON .JSON-Beispiel,
quelle
Json
war hilfreichHier gibt es bereits wenige Antworten, aber ich möchte hinzufügen, dass Ihr GSON nicht funktioniert , wenn Sie
ProGuard
Ihren Code@SerializedName("name")
verschleiern und nicht in Ihrer Modellklasse verwenden. Aufgrund der Verschleierung haben sich Ihre Variablennamen möglicherweise vonString name
zu geändert ,String a
was zu einer fehlerhaften GSON-Analyse geführt hat, da GSON nach Schlüsseln suchta
für json und dieser fehlschlägt.Durch die Angabe
@SerializedName
sucht GSON nicht in json basierend auf dem Variablennamen und verwendet nur angegeben@SerializedName
.Natürlich können Sie proguard anweisen, Ihr Modell nicht zu verschleiern. Wenn Sie jedoch möchten, dass das Modell verschleiert wird, müssen Sie dies angeben
@SerializedName
quelle
Sie können Proguard anweisen, Ihre Datenklassen nicht zu verschleiern, indem Sie @Keep über der Klasse angeben. Dadurch wird Ihre Klasse weder entfernt noch verschleiert. Es ist nicht erforderlich, jedem Feld explizit @SerializedName hinzuzufügen, wenn der Feldname dem dafür verwendeten Json-Schlüssel ähnelt.
quelle