Jackson 默认 JsonView 用于序列化

Jackson default JsonView for Serialization

有没有办法定义在序列化对象时默认使用哪个JsonView?

我有三个视图,DefaultView、UserView 和 AdminView。现在,如果我没有专门设置要使用的视图,它将包括来自默认、用户和管理视图的 所有 字段。

我希望它只包含来自 DefaultView 的字段,除非我用 @JsonView(UserView.class/AdminView.class).

明确标记我的其余端点

用于序列化的视图可以通过以下代码设置:

objectMapper.setConfig(objectMapper.getSerializationConfig().withView(DefaultView.class));

我最终删除了 DefaultView。我继续使用 @JsonView(UserView.class/AdminView.class) 注释属于专门视图的任何字段。任何我不想序列化的字段我都标记为@JsonIgnore。

我使用以下 ObjectMapper 配置来获得我想要的结果:

@Provider
public class JacksonContextResolver implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper;

    public JacksonContextResolver() {
        objectMapper = new ObjectMapper();
        objectMapper.setConfig(objectMapper.getSerializationConfig().withView(Object.class)); 
        objectMapper.enable(MapperFeature.DEFAULT_VIEW_INCLUSION);            
    }

    @Override
    public ObjectMapper getContext(Class<?> arg0) {
        return objectMapper;
    }
}