Esta classe possui dois campos que representam o nome da pessoa e a data de nascimento de uma pessoa. Esses campos são anotados com a anotação @SerializedName . O parâmetro (valor) desta anotação é o nome a ser usado quando serialisingedeserialising objetos. Por exemplo, o campo Java personName é representado como nome em JSON.
@MuhammadAli é um prazer ajudá-lo. Você também pode me dar crédito por voto positivo e aceitar a resposta, minha cara :)
Chintan Rathod
3
Eleitores negativos, por favor, adicionem seu comentário para que eu possa entender o propósito do voto negativo e eu possa melhorar minha resposta em diante .. :)
Chintan Rathod
4
Boa resposta .... Direto ao ponto .... Exemplo com Jsonfoi útil
Devrath
Ainda bem que ajudou. :)
Chintan Rathod
1
Realmente util!! ; Muito obrigado :) @ChintanRathod
Imran
64
Já existem algumas respostas aqui, mas eu gostaria de acrescentar que se você estiver usando ProGuardpara ofuscar seu código e não usar @SerializedName("name")em sua classe de modelo, seu GSON não funcionará. Devido à ofuscação, os nomes de suas variáveis podem ter mudado de String namepara String aresultando em análise GSON quebrada, pois GSON irá procurar a chavea em json e irá falhar.
Ao especificar @SerializedName, GSON não procurará em json com base no nome da variável e apenas usará o especificado @SerializedName.
Claro, você pode dizer ao proguard para não ofuscar seu modelo, mas se você gostaria que o modelo fosse ofuscado, você deve especificar @SerializedName
Gr8 info, eu costumava dizer ao Proguard para não ofuscar os modelos. Agora, com isso eu posso fazer. :)
akashPatra
1
Isto é muito, muito importante. Perdeu 2 horas e adicionou @SerializedName em todos os lugares.
Abhijit Kurane
2
Você pode instruir o Proguard a não ofuscar suas classes de dados, especificando @Keep no topo da classe. Isso não removerá nem ofuscará sua classe. Não há necessidade de adicionar @SerializedName a cada campo explicitamente se o nome do campo for semelhante à chave Json que está sendo usada para ele.
Respostas:
Exemplo de classe Java,
Esta classe possui dois campos que representam o nome da pessoa e a data de nascimento de uma pessoa. Esses campos são anotados com a anotação @SerializedName . O parâmetro (valor) desta anotação é o nome a ser usado quando
serialising
edeserialising
objetos. Por exemplo, o campo Java personName é representado como nome em JSON.Exemplo JSON,
fonte
Json
foi útilJá existem algumas respostas aqui, mas eu gostaria de acrescentar que se você estiver usando
ProGuard
para ofuscar seu código e não usar@SerializedName("name")
em sua classe de modelo, seu GSON não funcionará. Devido à ofuscação, os nomes de suas variáveis podem ter mudado deString name
paraString a
resultando em análise GSON quebrada, pois GSON irá procurar a chavea
em json e irá falhar.Ao especificar
@SerializedName
, GSON não procurará em json com base no nome da variável e apenas usará o especificado@SerializedName
.Claro, você pode dizer ao proguard para não ofuscar seu modelo, mas se você gostaria que o modelo fosse ofuscado, você deve especificar
@SerializedName
fonte
Você pode instruir o Proguard a não ofuscar suas classes de dados, especificando @Keep no topo da classe. Isso não removerá nem ofuscará sua classe. Não há necessidade de adicionar @SerializedName a cada campo explicitamente se o nome do campo for semelhante à chave Json que está sendo usada para ele.
fonte