首页 > 解决方案 > Spring Jackson 自定义反序列化器不调用

问题描述

我有一个 Spring 项目,我尝试添加一个自定义反序列化器来反序列化 Date 属性,具体取决于它们的格式。如果我将它用作 Date 属性的注释,它可以正常工作。但是如果我将反序列化器添加到我的对象映射器中,杰克逊反序列化日期时不会调用它。

我尝试像这样应用我的自定义反序列化器:

    @Bean
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    SimpleModule module = new SimpleModule();
    module.addDeserializer(Date.class, new DateDeserializer());
    mapper.registerModule(module);
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
    mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
    mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
    mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);
    return mapper;
}

我不想每次都在 Date 属性上应用注释,我想默认使用这个反序列化器。我做错了什么?

标签: springjacksonjson-deserialization

解决方案


感谢大家的帮助。最后我在spring.io找到了答案。

@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.deserializerByType(Date.class, new DateDeserializer());
    converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
   }
}

推荐阅读