serializedname name annotation java android json gson android-gson

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