Patrząc na opcje, wydaje się, że możesz dodawać adnotacje do właściwości, które będą pokazywane tylko wtedy, gdy dany View
jest przekazywany do ObjectMapper
używany do serializacji. Możesz w ten sposób edytować klasę:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
i podaj:
class Views {
static class WebView { }
}
a następnie serializuj po utworzeniu konfiguracji z poprawnym widokiem:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Który następnie serializowałby to. Nieokreślenie widoku podczas serializacji z opakowaniem MongoDB oznaczałoby, że metoda zostanie zignorowana. Właściwości bez adnotacji JsonView są domyślnie serializowane, co można zmienić, określając:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Więcej informacji jest dostępnych na Jackson Wiki.
Okazuje się, że są jeszcze inne alternatywy:istnieją Jackson MixIns, które pozwalają nadpisać zachowanie (de)serializacji części klasy bez modyfikowania samej klasy, a od Jackson 2.0 (bardzo niedawna wersja) są filtry .