En regardant les options, il semble que vous puissiez annoter les propriétés pour qu'elles ne s'affichent que si une View
donnée est passé à ObjectMapper
utilisé pour la sérialisation. Vous pourriez ainsi éditer la classe :
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
et fournissez :
class Views {
static class WebView { }
}
puis sérialiser après avoir créé une configuration avec la bonne vue :
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Qui le sérialiserait alors. Ne pas spécifier la vue lors de la sérialisation avec le wrapper MongoDB signifierait que la méthode serait ignorée. Les propriétés sans annotation JsonView sont sérialisées par défaut, un comportement que vous pouvez modifier en spécifiant :
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Plus d'informations sont disponibles sur le Jackson Wiki.
Il s'avère qu'il existe encore d'autres alternatives :il existe Jackson MixIns qui vous permettrait de remplacer le comportement de (dé) sérialisation des parties d'une classe sans modifier la classe elle-même, et à partir de Jackson 2.0 (version très récente), il existe des filtres , aussi.