Als je naar opties kijkt, lijkt het erop dat je eigenschappen kunt annoteren zodat ze alleen worden weergegeven als een gegeven View
wordt doorgegeven aan de ObjectMapper
gebruikt voor serialisatie. Je zou de klas dus kunnen bewerken:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
en geef:
class Views {
static class WebView { }
}
en vervolgens serialiseren na het maken van een configuratie met de juiste weergave:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Die het dan zou serialiseren. Het niet specificeren van de weergave bij het serialiseren met de MongoDB-wrapper zou betekenen dat de methode zou worden genegeerd. Eigenschappen zonder JsonView-annotatie zijn standaard geserialiseerd, een gedrag dat u kunt wijzigen door op te geven:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Meer informatie is beschikbaar op de Jackson Wiki.
Er zijn ook nog andere alternatieven, zo blijkt:er zijn Jackson MixIns waarmee je het (de)serialisatiegedrag van delen van een klasse kunt overschrijven zonder de klasse zelf aan te passen, en vanaf Jackson 2.0 (zeer recente release) zijn er filters , ook.