Gson – Impedindo que um atributo seja serializado ou deserializado

by Cinta Vidal Agullo / from beautifuldecay.com

ExclusionStrategy

Um dos caminhos para impedir que um atributo seja serializado é através da implementação de um ExclusionStrategy, onde através da reescrita do método shouldSkipField() informaremos se queremos ou não que um atributo de uma classe sendo serializada seja juntamente serializado, e o método shouldSkipClass(), onde o enfoque passa a ser a classe, se desejamos ou não que uma classe seja serializada.

Após isso, basta na criação de nossa instância de Gson através do GsonBuilder invocarmos o método addSerializationExclusionStrategy():

Repare que também existe o método addDeserializationExclusionStrategy(), que possui o mesmo objeto mas para o processo de deserialização.

excludeFieldsWithModifiers

Um segundo método para impedirmos que um atributo seja serializado ou deserializado é o excludeFieldsWithModifiers() que espera como parâmetro um constante de java.lang.reflect.Modifier. Esse método informa quais campos queremos impedir informando seus modificadores. Por exemplo, caso não seja desejado que todos os atributos final sejam serializados ou deserializados, fazemos assim:

excludeFieldsWithoutExposeAnnotation

Um terceiro método a ser comentado para essa função é o excludeFieldsWithoutExposeAnnotation(), que impede que todos os atributos que não possuam a anotação @Exposed seja serializado ou deserializado. Ou seja, todos os campos que queremos que seja serializado ou deserializado deve ser anotado com @Exposed. Segue o exemplo de uso abaixo:

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s