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 serialisingy deserialisingobjetos. Por ejemplo, el campo de Java personName se representa como nombre en JSON.
@MuhammadAli, es un placer poder ayudarte. También puede darme crédito por voto a favor y aceptar la respuesta querida :)
Chintan Rathod
3
Votantes negativos, agreguen su comentario para que pueda entender cuál es el propósito de votar en contra y puedo mejorar mi respuesta en adelante .. :)
Ya hay algunas respuestas aquí, pero me gustaría agregar que si está usando ProGuardpara 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 namea String aresultando en un análisis GSON roto ya que GSON buscará la clave aen 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
Gr8 info, solía decirle a proguard que no ofuscara los modelos. Ahora, con esto puedo hacerlo. :)
akashPatra
1
Esto es muy, muy importante. Perdí 2 horas y agregué @SerializedName en todas partes.
Abhijit Kurane
2
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.
Respuestas:
Ejemplo de clase Java,
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
ydeserialising
objetos. Por ejemplo, el campo de Java personName se representa como nombre en JSON.Ejemplo JSON,
fuente
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 deString name
aString a
resultando en un análisis GSON roto ya que GSON buscará la clavea
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
fuente
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.
fuente