首页 > 解决方案 > 自定义对象映射器在springboot中不生效

问题描述

我有一个springboot应用程序。我正在尝试用自定义字符串(“NA”)替换空值。因此,我配置了一个带有自定义序列化程序提供程序的对象映射器,该提供程序又具有一个自定义空值序列化程序。您可以检查下面的代码。

@Configuration
public class JacksonConfig {
    @Bean
    public ObjectMapper jacksonObjectMapper() {
        return new CustomObjectMapper();
    }

    @Bean
    public SerializationConfig serializationConfig() {
        return jacksonObjectMapper().getSerializationConfig();
    }
}

class CustomObjectMapper extends ObjectMapper {
    CustomObjectMapper() {
        super();
        DefaultSerializerProvider.Impl serializerProvider = new DefaultSerializerProvider.Impl();
        serializerProvider.setNullValueSerializer(new JsonSerializer<Object>() {
            @Override
            public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
                gen.writeString("NA");
            }
        });
        this.setSerializerProvider(serializerProvider);
    }
}

现在的问题是,即使创建了这些 bean,自定义的 null 值序列化器仍然没有生效。在响应中,我仍然看到很多空值。还有什么我在这里想念的吗?

标签: spring-bootjava-8jacksonobjectmapper

解决方案


推荐阅读