Når du ser på muligheder, ser det ud til, at du kan kommentere egenskaber, så de kun vises, hvis en given View
sendes til ObjectMapper
bruges til serialisering. Du kunne således redigere klassen:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
og give:
class Views {
static class WebView { }
}
og serialiser derefter efter oprettelse af en konfiguration med den korrekte visning:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Som så ville serialisere det. Hvis du ikke angiver visningen, når du serialiserer med MongoDB-indpakningen, ville det betyde, at metoden ville blive ignoreret. Egenskaber uden en JsonView-annotering serialiseres som standard, en adfærd du kan ændre ved at angive:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Mere information er tilgængelig på Jackson Wiki.
Der er stadig andre alternativer, viser det sig:der er Jackson MixIns, som ville lade dig tilsidesætte (de)serialiseringsadfærd for dele af en klasse uden at ændre selve klassen, og fra Jackson 2.0 (meget nyere udgivelse) er der filtre også.