spring - 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 属性上应用注释,我想默认使用这个反序列化器。我做错了什么?
解决方案
感谢大家的帮助。最后我在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()));
}
}
推荐阅读
- mysql - 如何在 Where In Query (Mysql) 中为每个项目获取相等的行数
- django - 是否可以包装 Django 代码以确保 ORM 的所有数据库访问默认设置为“使用”?
- node.js - 在 NodeJS 中检测 GRPC 服务器故障
- python - 在纯 Python 中创建特定矩阵
- python - 为什么我的程序只能在迭代字符串而不是列表时成功处理大量数据?
- flutter - Flutter - 容器高度与子 Text.length 相同?
- python - 避免同一字段的重复条目
- java - 我该如何禁用按钮本身?
- html - 使用 :after:hover 字体颜色不会改变
- python - Goto 或 python 中的任何替代方法