¿Cuál es el propósito básico de la @SerializedName
anotación en Android usando Gson?
Dame algunos ejemplos diferentes. No puedo entender el propósito principal de usarlo.
¿Cuál es el propósito básico de la @SerializedName
anotación en Android usando Gson?
Dame algunos ejemplos diferentes. No puedo entender el propósito principal de usarlo.
Respuestas:
Ejemplo de clase Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Esta clase tiene dos campos que representan el nombre de la persona y la fecha de nacimiento de una persona. Estos campos están anotados con la anotación @SerializedName . El parámetro (valor) de esta anotación es el nombre que se utilizará cuando serialising
y deserialising
objetos. Por ejemplo, el campo de Java personName se representa como nombre en JSON.
Ejemplo JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
Ya hay algunas respuestas aquí, pero me gustaría agregar que si está usando ProGuard
para Ofuscar su código y no lo usa @SerializedName("name")
en su clase modelo, entonces su GSON no funcionará. Debido a la ofuscación, es posible que los nombres de sus variables hayan cambiado de String name
a String a
resultando en un análisis GSON roto ya que GSON buscará la clave a
en json y fallará.
Al especificar @SerializedName
, GSON no buscará en json según el nombre de la variable y solo usará el especificado @SerializedName
.
Por supuesto, puede decirle a proguard que no ofusque su modelo, pero si desea que se ofusque el modelo, debe especificar @SerializedName
Puede indicarle a Proguard que no ofusque sus clases de datos especificando @Keep en la parte superior de la clase. Esto no eliminará ni ofuscará su clase. No es necesario agregar @SerializedName a todos y cada uno de los campos explícitamente si el nombre del campo es similar a la clave Json que se usa para él.