
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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"arrayInteger": [ | |
1, | |
2, | |
3 | |
], | |
"boolean": true, | |
"nullObject": null, | |
"number": 123, | |
"text": "Hello World" | |
} |
Note que ele é compatível com o objeto abaixo:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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