java - annotation - ¿Cuál es el propósito básico de la anotación @SerializedName en Android usando Gson?
java field name annotation (3)
¿Cuál es el propósito básico de la anotación @SerializedName en Android usando Gson?
Dame algunos ejemplos diferentes. No puedo entender el propósito principal de usarlo.
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á al
serialising
y
deserialising
objetos.
Por ejemplo, el campo Java
personName
se representa como
nombre
en JSON.
JSON Ejemplo,
{
"name":"chintan",
"bd":"01-01-1990"
}
Puede indicar 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 cada campo explícitamente si el nombre del campo es similar a la clave Json que se usa para él.
Ya hay pocas respuestas aquí, pero me gustaría agregar que si está usando
ProGuard
para ofuscar su código y no usa
@SerializedName("name")
en su clase de modelo, entonces su GSON no funcionará.
Debido a la ofuscación, los nombres de sus variables pueden haber 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 en función del nombre de la variable y solo utilizará
@SerializedName
especificado.
Por supuesto, puede indicarle a proguard que no ofusque su modelo, pero si desea que se ofusque el modelo, debe especificar
@SerializedName