MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Serialize uma classe de duas maneiras diferentes com Jackson


Olhando para as opções, parece que você pode anotar propriedades para serem mostradas apenas se uma determinada View é passado para o ObjectMapper usado para serialização. Assim, você pode editar a classe:
public static class FooReference {
    public DBRef<Foo> foo;

    @JsonView(Views.WebView.class)
    public Foo getFoo() {
        return foo.fetch();
    }
}

e fornecer:
class Views {
    static class WebView { }
}

e então serialize depois de criar uma configuração com a visualização correta:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);

O que seria então serializá-lo. Não especificar a visualização ao serializar com o wrapper do MongoDB significaria que o método seria ignorado. Propriedades sem uma anotação JsonView são serializadas por padrão, um comportamento que você pode alterar especificando:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);

Mais informações estão disponíveis no Jackson Wiki.

Existem ainda outras alternativas, também:existem Jackson MixIns que permitem substituir o comportamento de (des)serialização de partes de uma classe sem modificar a própria classe, e a partir do Jackson 2.0 (versão muito recente) existem filtros , também.