Qual è lo scopo di base @SerializedName
dell'annotazione in Android utilizzando Gson?
Dammi alcuni esempi diversi. Non riesco a capire lo scopo principale dell'utilizzo.
Qual è lo scopo di base @SerializedName
dell'annotazione in Android utilizzando Gson?
Dammi alcuni esempi diversi. Non riesco a capire lo scopo principale dell'utilizzo.
Risposte:
Esempio di classe Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Questa classe ha due campi che rappresentano il nome della persona e la data di nascita di una persona. Questi campi sono annotati con l' annotazione @SerializedName . Il parametro (valore) di questa annotazione è il nome da utilizzare quando serialising
e gli deserialising
oggetti. Ad esempio, il campo Java personName è rappresentato come nome in JSON.
Esempio JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
stato utile
Ci sono già poche risposte qui, ma vorrei aggiungere che se stai usando ProGuard
per offuscare il tuo codice e non lo usi @SerializedName("name")
nella tua classe modello, allora il tuo GSON non funzionerà. Perché a causa dell'offuscamento, i nomi delle variabili potrebbero essere cambiati da String name
a String a
risultando in un'analisi GSON non funzionante poiché GSON cercherà la chiavea
in json e fallirà.
Specificando @SerializedName
, GSON non cercherà in json in base al nome della variabile e utilizzerà solo specificato @SerializedName
.
Ovviamente puoi dire a proguard di non offuscare il tuo modello, ma se desideri che il modello sia offuscato, devi specificare @SerializedName
Puoi indicare a Proguard di non offuscare le tue classi di dati specificando @Keep all'inizio della classe. Questo non rimuoverà né offuscherà la tua classe. Non è necessario aggiungere @SerializedName a ogni campo in modo esplicito se il nome del campo è simile alla chiave Json utilizzata per esso.