如何在 Spring 上注册我的 JsonSerializer

ana*_*ius 3 java jackson spring-boot

获取此问题的响应:/sf/answers/3189629761/我想将其添加NullSerializer到自动配置的ObjectMapper. Spring Boot 文档:

com.fasterxml.jackson.databind.Module 类型的任何 bean 都会自动注册到自动配置的 Jackson2ObjectMapperBuilder 中,并应用于它创建的任何 ObjectMapper 实例。当您向应用程序添加新功能时,这提供了一种贡献自定义模块的全局机制。

这就是我正在尝试的方式:

@Configuration
public class JacksonConfig {

    @Bean
    public Module customSerializer() {
        SimpleModule module = new SimpleModule();
        module.addSerializer(new NullSerializer());
        return module;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

NullSerializer does not define valid handledType() -- must either register with method that takes type argument or make serializer extend com.fasterxml.jackson.databind.ser.std.StdSerializer
Run Code Online (Sandbox Code Playgroud)

handleType() 方法的 Javadoc 说:

用于访问此序列化程序可以处理的对象类型的方法。请注意,此信息不能保证准确 - 它可能是更通用的(超类型) - 但它不应该是错误的(返回不相关的类型)。默认实现将返回 null,这本质上与返回 Object.class 的含义相同;也就是说,对处理类型一无所知。

使用 Spring Boot 2.0.5.RELEASE

Mic*_*ael 6

我认为问题在于您使用的是原始类型。你需要给它上一课。

module.addSerializer(Object.class, new NullSerializer<>());
Run Code Online (Sandbox Code Playgroud)