Gson, wie man serialisierte Namen
Wenn wir definieren eine Klasse mit dem folgenden format
public class Field {
@SerializedName("name")
public String name;
@SerializedName("category")
public String category;
}
für die JsonObject
Inhalt
{
"name" : "string",
"category" : "string",
}
und mit Gson
zu analysieren, den Inhalt
Field field = new GsonBuilder().create().fromJson(
content, Field.class);
So,meine Frage ist, können wir Gson
um die @Serialized
Namen. In diesem Beispiel möchte ich wissen, was @Serialized
name wird verwendet für die field.name
,die name
und für field.category
die category
.
Als pro-vorgeschlagen von @Sotirios Delimanolis, mit Reflection
können wir die Serialized
Namen
java.lang.reflect.Field fields = Field.class.getDeclaredField("name");
SerializedName sName =fields.getAnnotation(SerializedName.class);
System.out.println(sName.value());
- wenn wir
"name"
dann gibt es keine Notwendigkeit zur Reflexion und immer den Wert. gibt es eine Möglichkeit zu bekommen, nur aus Feld-wie einfach mit der variablename
ohne tatsächlich über die Zeichenkette "Namen"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reflektion verwenden, zum abrufen der
Field
Objekt, das Sie möchten. Sie können dann mitField#getAnnotation(Class)
zu bekommenSerializedName
- Instanz, die Sie anrufen könnenvalue()
um den Namen.field
ist meinObject
KlasseField
. Und ich bin mitfield.name.getClass().getAnnotation(SerializedName.class).value()
. Aber es gibt mirNullPointer Exception
.Field
. Ich meintejava.lang.reflect.Field
. Holen Sie sich dieClass
- Objekt der IhrField
KlassegetDeclaredField()
um dieField
Objekt für Ihrename
Feld.java.lang.reflect.Field fields = Field.class.getDeclaredField("name"); SerializedName sName =fields.getAnnotation(SerializedName.class); System.out.println(sName.value());
Dank dafür. Aber gibt es da nicht eine andere Methode, die ich umsetzen kann, ohnereflection
als ich hörte, dassreflection
ist CPU-intensiv. Und ich bin der Entwicklung dieses fürAndroid
POST
Anfrage an den server,unter Verwendung der Werte, die ich analysiert mitGson
Bibliothek. Bedeutung ,die ich senden möchten, diePOST
params als{"name":"userInputValue","category":"userInputCategory"}
d.h. mit den gleichen@Serialized("name")
name Wert alsPOST
- Taste.