统一对日期类型进行格式处理【SpringMVC】

在 server 模块中使用

在 WebMvcConfig 类中扩展 SpringMVC 的消息转换器

代码:

复制代码
 1 /**
 2      * 扩展Spring MVC框架的消息转化器
 3      * @param converters
 4      */
 5 @Override
 6 public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
 7     //创建一个消息转换器对象
 8     MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
 9     //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
10     converter.setObjectMapper(new JacksonObjectMapper());
11     //将自己的消息转化器加入容器中
12     converters.add(0,converter);
13 }
复制代码

 

备注:JacksonObjectMapper 在 common 模块已经提供

复制代码
 1 package com.sky.json;
 2 
 3 import com.fasterxml.jackson.databind.DeserializationFeature;
 4 import com.fasterxml.jackson.databind.ObjectMapper;
 5 import com.fasterxml.jackson.databind.module.SimpleModule;
 6 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
 7 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
 8 import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
 9 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
10 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
11 import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
12 
13 import java.time.LocalDate;
14 import java.time.LocalDateTime;
15 import java.time.LocalTime;
16 import java.time.format.DateTimeFormatter;
17 
18 import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
19 
20 /**
21  * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
22  * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
23  * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
24  */
25 public class JacksonObjectMapper extends ObjectMapper {
26 
27     public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
28     public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
29     public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
30 
31     public JacksonObjectMapper() {
32         super();
33         //收到未知属性时不报异常
34         this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
35 
36         //反序列化时,属性不存在的兼容处理
37         this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
38 
39         SimpleModule simpleModule = new SimpleModule()
40                 .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
41                 .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
42                 .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
43                 .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
44                 .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
45                 .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
46 
47         //注册功能模块 例如,可以添加自定义序列化器和反序列化器
48         this.registerModule(simpleModule);
49     }
50 }
复制代码

 

posted @   青核桃啊  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示