När du tittar på alternativen verkar det som att du kan kommentera egenskaper som endast ska visas om en given View
skickas till ObjectMapper
används för serialisering. Du kan alltså redigera klassen:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
och tillhandahåll:
class Views {
static class WebView { }
}
och serialisera sedan efter att ha skapat en konfiguration med rätt vy:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Som sedan skulle serialisera det. Att inte specificera vyn vid serialisering med MongoDB-omslaget skulle innebära att metoden skulle ignoreras. Egenskaper utan en JsonView-anteckning serialiseras som standard, ett beteende som du kan ändra genom att ange:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Mer information finns på Jackson Wiki.
Det finns fortfarande andra alternativ också, visar det sig:det finns Jackson MixIns som låter dig åsidosätta (av)serialiseringsbeteende för delar av en klass utan att modifiera själva klassen, och från och med Jackson 2.0 (mycket ny version) finns det filter också.