
Há um tempo atrás tive a necessidade de serializar e deserializar um atributo que a sua referência no Json tenha um nome diferente. Por exemplo, no Json há um campo “text” que gostaria que o seu valor fosse preenchido em meu atributo chamado “texto”. Isso não aconteceria normalmente já que o framework Gson relaciona campos e atributos com nomes iguais. A solução que encontrei foi através da anotação @Serialize. Vamos observar o json abaixo:
{ | |
"arrayInteger": [ | |
1, | |
2, | |
3 | |
], | |
"boolean": true, | |
"nullObject": null, | |
"number": 123, | |
"text": "Hello World" | |
} |
Note que ele é compatível com o objeto abaixo:
public class Objeto { | |
private int[] array; | |
private Boolean boolean; | |
private Object nullObject; | |
private String text; | |
} |
Mas deixaria de ser se o nosso atributo “text” passasse a se chamar “texto” por exemplo. Como seria a solução? Existe uma anotação chamada @Serialize(“NOME_DO_CAMPO”), onde passamos o nome do campo referente no Json, tanto para serialização quanto para deserialização. No caso, seria simplesmente isso:
public class Objeto { | |
private int[] array; | |
private Boolean boolean; | |
private Object nullObject; | |
@Serialize("text") | |
private String texto; | |
} |
salvou a vida aqui
CurtirCurtir
Booa!! Bom saber, Ícaro! Por isso, continuo postando aqui heheeh!
CurtirCurtir
salvou a vida aqui
CurtirCurtir
Salvando vidas, muito boa a explicação.
CurtirCurtir
Muito obrigado, Rafael! Bom saber que as postagens tem sido úteis!
CurtirCurtir
Qual a versão do gson que possui essa anotation??
CurtirCurtir