Was ist der Hauptzweck der Annotation von @SerializedName in Android mit Gson?


110

Was ist der Hauptzweck der @SerializedNameAnnotation in Android mit Gson?

Geben Sie mir verschiedene Beispiele. Ich kann den Hauptzweck der Verwendung nicht verstehen.


Was sagt der Javadoc?
— Sotirios Delimanolis

Ich kann nicht verstehen, was gesagt wird.
— Muhammad Ali

Es wird den Eigenschaftsindentifikator, zu dem diese Eigenschaft gehört, aus den
— JSON-

1
Sie können diese fantastische Erklärung
— Abhishek Kumar

Antworten:


254

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 serialisingund deserialisingObjekte. Beispielsweise wird das Java-Feld personName als Name dargestellt in JSON .

JSON-Beispiel,

{
    "name":"chintan",
    "bd":"01-01-1990"
}

2
@ 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


1
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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.