Was ist der Hauptzweck der @SerializedName
Annotation in Android mit Gson?
Geben Sie mir verschiedene Beispiele. Ich kann den Hauptzweck der Verwendung nicht verstehen.
Was ist der Hauptzweck der @SerializedName
Annotation in Android mit Gson?
Geben Sie mir verschiedene Beispiele. Ich kann den Hauptzweck der Verwendung nicht verstehen.
Antworten:
Java-Klassenbeispiel,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
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
und deserialising
Objekte. Beispielsweise wird das Java-Feld personName als Name dargestellt in JSON .
JSON-Beispiel,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
war hilfreich
Hier 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 von String 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
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.