解决SpringBoot日期序列化问题:[Java 8 date/time type `java.time.LocalDateTime` not supported by default]

这篇具有很好参考价值的文章主要介绍了解决SpringBoot日期序列化问题:[Java 8 date/time type `java.time.LocalDateTime` not supported by default]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、问题背景

最近项目在通过sql查询数据的时候,报了如下错误:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.ytx.dependency.common.utils.Result["data"]->com.ytx.ccserverform.modules.data.dto.ViewModelDataVO["list"]->java.util.ArrayList[0]->java.util.HashMap["occurrence_time"])

java 8 date/time type `java.time.localdatetime` not supported by default: ad,故障分析,java,spring boot,python

2、分析过程

异常信息:Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" 

从异常信息中我们解读到 java8 Jackson库在默认情况下不支持LocalDateTime序列化和反序列化。

于是看了数据表的字段,确实有datetime日期类型的字段, java8将 java.time.LocalDateTime 序列化为 JSON 时,就会报以上错误。

3、解决方法

1、配置全局配置(亲测有效)

在Springboot WebMvcConfigurer其全局配置中增加以下配置,代码如下:

@Configuration
public class WebJsonConverterConfig implements WebMvcConfigurer {

    /**
     * 解决Java8 日期序列化问题
     * jackson默认不支持java8 LocalDateTime的序列化和反序列化
     *
     * @param converters
     */
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.registerModule(new JavaTimeModule());
        messageConverter.setObjectMapper(objectMapper);
        converters.add(0, messageConverter);
    }

}

2、用阿里的FastJson替换ObjectMapper

4、总结

对于这个问题解决得方案有很对,核心还是对LocalDate进行进行序列器解析,将LocalDateTime转为Date。大家根据自己得需要选择合适得方案,本文就不一一列举所有方案了。

 文章来源地址https://www.toymoban.com/news/detail-857866.html

到了这里,关于解决SpringBoot日期序列化问题:[Java 8 date/time type `java.time.LocalDateTime` not supported by default]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis添加LocalDateTime时间序列化/反序列化Java 8报‘jackson-datatype-jsr310’问题

    错误信息: 1、增加pom依赖 2、对应字段增加属性

    2024年02月11日
    浏览(30)
  • 解决BigDecimal序列化科学计数法前端展示问题(大坑)

    前言:在生产中出现一个问题,就是BigDecimal类型的字段在前端页面展示变成科学计数法,通过排查,发现里面的坑还是挺多的,所以特意记录下处理过程。Json序列化,不同项目中配置的都不一样,有些项目是使用springboot里面自带的jackson的,有些是使用fastjson处理,不同的序

    2024年01月18日
    浏览(31)
  • WEB攻防-Java安全&原生反序列化&SpringBoot攻防&heapdump提取&CVE

    知识点: 1、Java安全-原生反序列化-3大类接口函数利用 2、Java安全-SpringBoot攻防-泄漏安全CVE安全 序列化是将Java对象转换成字节流的过程。而反序列化是将字节流转换成Java对象的过程,java序列化的数据一般会以标记( ac ed 00 05 )开头,base64编码的特征为 rO0AB 。 JAVA常见的序列化

    2024年02月03日
    浏览(31)
  • SpringCache 框架使用以及序列化和缓存过期时间问题的解决

    目录 为什么使用Spring Cache 如何使用Spring Cache 1 加依赖 2 开启缓存 3 加缓存注解 序列化以及过期时间等问题 解决方案:自定义序列化方式 1.自定义序列化方式并设置白名单 2.配置并设置缓存的过期时间         缓存有诸多的好处,于是大家就摩拳擦掌准备给自己的应用加

    2024年02月15日
    浏览(31)
  • 解决一个JSON反序列化问题-空字符串变为空集合

    当我后端实体中定义如下: 如果前端传projectTypeId 是 null 或者 [] 都是没问题的。当前端传\\\"\\\" 则会报错。 报错如下: 意思是无法将空字符串强转为集合 前端把“” 变为null或者[]即可 (但是我所在这个项目,原先定义的是 private String projectTypeId; 前端传\\\"\\\" 也没毛病,但是后期更

    2024年01月25日
    浏览(42)
  • springboot对象序列化自定义序列化注解

    在开发中有时候会遇到一些内容返回时需要翻译,或者一些内容在序列化之前需要特殊处理(脱敏啥的)。 一般对单个属性可以直接用 jackson 的序列化注解对某个属性单独处理 com.fasterxml.jackson.databind.annotation.JsonSerialize(using= xxx.class) 但是直接使用不太灵活,可以进一步引入注

    2024年02月07日
    浏览(39)
  • Springboot Jackson 序列化与反序列化配置

    可解决在使用默认反序列化Jackson时,LocalDateTime类型的请求参数反序列化失败的问题

    2024年02月02日
    浏览(35)
  • SpringBoot序列化、反序列化空字符串为null的三种方式

    SpringBoot项目 方式:①Jackson(推荐)、②切面+反射、③注解+切面+反射 后两种方式,未做返回值的处理。 1、 Jackson正反序列化(推荐) StdConverter 和 JsonSerializer的区别 ENTITY 序列化处理类 反序列化处理类 序列化-转换1 序列化-转换2 Controller 测试 2、切面+反射/3、注解+切面+反

    2024年04月22日
    浏览(30)
  • Java序列化和反序列化

    目录 一、序列化和反序列化 二、Java序列化演示 三、反序列化漏洞 1、含义 ​序列化就是内存中的对象写入到IO流中,保存的格式可以是二进制或者文本内容。反序列化就是IO流还原成对象。 2、用途 (1)传输网络对象 (2)保存Session 1、序列化 java.io.ObjectOutputStream代表对象

    2023年04月25日
    浏览(27)
  • 【Java 基础篇】Java序列化与反序列化详解

    在Java中,序列化和反序列化是一种将对象转换为字节流和将字节流转换为对象的机制。通过序列化,可以将对象存储到文件中、传输到网络上,或者在分布式系统中进行对象的传递。本文将详细介绍Java序列化和反序列化的原理、使用方法和常见应用场景,并提供一些示例代

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包