Z pohledu na možnosti se zdá, že můžete anotovat vlastnosti, aby se zobrazily pouze v případě, že daný View
je předán ObjectMapper
používá se pro serializaci. Můžete tedy třídu upravit:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
a poskytnout:
class Views {
static class WebView { }
}
a poté serializovat po vytvoření konfigurace se správným zobrazením:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Což by to pak serializovalo. Neuvedení pohledu při serializaci s obalem MongoDB by znamenalo, že metoda bude ignorována. Vlastnosti bez anotace JsonView jsou standardně serializovány, toto chování můžete změnit zadáním:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Více informací je k dispozici na Jackson Wiki.
Existují ještě další alternativy, jak se ukázalo:existují Jackson MixIns, které vám umožní přepsat (de)serializační chování částí třídy bez úpravy samotné třídy, a od Jackson 2.0 (velmi nedávné vydání) existují filtry .