通过查看选项,您似乎可以注释属性,只有在给定的View传递给用于序列化的ObjectMapper时才会显示.你可以编辑这个类:
public static class FooReference {
public DBRef foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
并提供:
class Views {
static class WebView { }
}
然后在使用正确的视图创建配置后序列化:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
然后将序列化它.使用MongoDB包装器进行序列化时不指定视图意味着该方法将被忽略.默认情况下,没有JsonView批注的属性会被序列化,您可以通过指定以下内容来更改此行为:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
还有其他替代方案,事实证明:有Jackson MixIns可以让你覆盖(de)类的部分行为而不修改类本身,并且从Jackson 2.0(最近发布)到filters,太.