阅读 148

JDK8 - LocalDateTime(反)序列化异常

JDK8 - LocalDateTime(反)序列化异常

异常信息#

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String "2021-05-25 11:02:00": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2021-05-25 11:02:00' could not be parsed at index 10; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2021-05-25 11:02:00": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2021-05-25 11:02:00' could not be parsed at index 10......

原因#

  • JDK8中LocalDateTime默认日期格式是"yyy-MM-ddTHH:mm:ss",相对于往常数据格式多了"T",造成接收或者返回时间数据格式的时候出现异常

解决1:#

  • 配置全局日期格式化

import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;@Configurationpublic class WebMvcConfig implements WebMvcConfigurer {    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")    private String pattern;    @Bean    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {        return builder -> {            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);            //返回时间数据序列化            builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter));            //接收时间数据反序列化            builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));        };    }}

解决2:#

  • 在LocalDateTime 实体类使用注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private LocalDateTime issueDate;

作者:HanLin

出处:https://www.cnblogs.com/hanlin-hl/p/14824695.html


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐