2015-03-10 16 views
45

kann mir jemand sagen, was der Hauptzweck der @SerializedName Anmerkung in Android mit Gsonwas ist der grundlegende Zweck @SerializedName Anmerkung in Android mit Gson

ist

Gib mir etwas anderes Beispiel. Ich habe verschiedene Websites eingecheckt, aber ich kann nicht verstehen, was der Hauptzweck der Verwendung ist.

+0

Was bedeutet die javadoc sagen? –

+0

ich kann nicht verstehen was gesagt wird? –

+0

Es identifiziert den Eigenschaftsidentifizierer, zu dem diese Eigenschaft gehört, aus den json Daten –

Antwort

123

Java-Klasse Beispiel

public class Person { 

    @SerializedName("name") 
    private String personName; 

    @SerializedName("bd") 
    private String birthDate; 

} 

Diese Klasse hat zwei Felder, die die Person Namen und das Geburtsdatum einer Person darstellen. Diese Felder sind mit der Annotation @SerializedName gekennzeichnet. Der Parameter (Wert) dieser Anmerkung ist der Name, der verwendet werden soll, wenn Objekte serialising und deserialising Objekte sind. Zum Beispiel wird das Java-Feld personName als Name in JSON dargestellt.

JSON Beispiel,

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

danke sooo viel für das Speichern meiner Zeit –

+1

@MuhammadAli es ist mir eine Freude, Ihnen zu helfen. Sie können mir auch Kredit geben durch upvote und akzeptieren Antwort mein lieber :) –

+2

Negative Wähler, fügen Sie bitte Ihren Kommentar, so dass ich verstehen kann, was Zweck der Abstimmung ist und ich kann meine Antwort weiter verbessern .. :) –

4

Es gibt bereits einige Antworten hier, aber ich würde das hinzufügen, wenn Sie ProGuard verwenden, um Ihren Code zu verschleiern & nicht @SerializedName("name") in Ihrer Modellklasse nicht verwenden, dann GSON wird nicht funktionieren. Aufgrund der Verschleierung haben sich Ihre Variablennamen möglicherweise von String name in String a geändert, was zu einem fehlerhaften GSON-Parsing geführt hat, da GSON nach Schlüssel a in json & suchen wird.

Durch die Angabe @SerializedName, GSON wird nicht in JSON basierend auf Variablenname & wird nur angegebenen @SerializedName verwenden.

Natürlich können Sie proguard sagen, Ihr Modell nicht zu verschleiern, aber wenn Sie möchten, Modell verschleiert haben, dann müssen Sie angeben, @SerializedName