有没有办法定义序列化对象时默认使用哪个 JsonView?
我有三个 View :DefaultView、UserView 和 AdminView。现在,如果我没有专门设置要使用的 View ,它将包括默认 View 、用户 View 和管理 View 中的所有字段。
我希望它只包含来自 DefaultView 的字段,除非我用 @JsonView(UserView.class/AdminView.class) 显式标记我的其余端点。
最佳答案
可以使用以下代码设置用于序列化的 View :
objectMapper.setConfig(objectMapper.getSerializationConfig().withView(DefaultView.class));
我最终删除了 DefaultView。我继续使用 @JsonView(UserView.class/AdminView.class) 注释属于专用 View 的任何字段。我不想序列化的任何字段都标记为 @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;
}
}
关于json - Jackson 默认 JsonView 用于序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822121/