json - Jackson 默认 JsonView 用于序列化

标签 json spring jackson resteasy

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

相关文章:

java - 如何创建作为一组 jackson 注释的注释?

python - 从嵌套的 json 文件将新列展平并构建到 Pandas df 中

javascript - 为什么预加载链接不适用于 JSON 请求?

json - 使用 AJAX 调用从 Symfony2 Controller 返回 JSONP

java - ConstraintViolationException : NOT NULL when using Spring, HSQL 和 Hibernate

java - 如何使用 Jackson JSON 注释来抑制空对象?

javascript - 我在将 hashMap String 发送到服务器 php 时遇到问题,而不是在 volley 响应 android 中返回 JsonArray

mysql - 如何使用 Spring 和 MySQL 配置 Wildfly 以支持 unicode 表情符号?

java - Maven 依赖和 Java 服务提供者接口(interface)

java - 如何验证我没有收到 @JsonProperty 和 @JsonAlias 中定义的两个值?