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;
}
}
有没有办法定义在序列化对象时默认使用哪个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;
}
}