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.