Gson (自定义转化器) 日期转换异常:Caused by: java.text.ParseException: Failed to parse date

简介: Gson (自定义转化器) 日期转换异常:Caused by: java.text.ParseException: Failed to parse date

报错异常:

* com.google.gson.JsonSyntaxException: 1478833871000
 * Caused by: java.text.ParseException: Failed to parse date ["1478833871000"]: Invalid time zone indicator '7'
 * Caused by: java.lang.IndexOutOfBoundsException: Invalid time zone indicator '7'

导致原因:

数据库存储的创建时间为timestamp类型,导致Gson日期转换异常

  1. 第一次尝试
尝试转换时间转换 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 1. 结果抛出异常的日期格式为LOng类型的毫秒数的格式
  1. 网上来源
Gson对于毫秒值解析的支持没有fastJson,从官网上看需要提供自定义转化器
 * 官网上说,在处理日期类型的时候经常出现内置转换器无法转换成功的情况,需要我们自己去定义一个转换器去进行转换,然后也告知了我们如何去定义自己的转换器

问题的解决

根据官网给定的方式,直接通过匿名内部类的方式实现了 JsonDeserializer 接口,重写 deserialize 方法,代码如下:

public static Gson catchParseDate() {
        // 创建gson对象构建器
        GsonBuilder gsonBuilder = new GsonBuilder();
        // 实现将long 类型的日期格式转换为国际标准格式
        gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws
                    JsonParseException {
                return new Date(json.getAsJsonPrimitive().getAsLong());
            }
        });
        //        // 创建gson对象
        return gsonBuilder.create();
    }
目录
相关文章
|
1月前
|
Java
Java中的异常链:从根源到解决方案
Java中的异常链:从根源到解决方案
37 0
|
1月前
|
存储 监控 Java
Java认识异常(超级详细)
Java认识异常(超级详细)
|
1月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
27 0
|
22小时前
|
JavaScript Serverless API
Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,FC3.0读取response body的时候出现错误提示"Caused by: java.io.IOException: closed"如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
11 3
|
1天前
|
Java 程序员 编译器
|
4天前
|
存储 Java 程序员
JavaSE&Java的异常
JavaSE&Java的异常
19 0
|
20天前
|
Java
Java中的异常类总结
Java中的异常类总结
|
20天前
|
Java 应用服务中间件 Linux
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
|
26天前
|
Java 开发工具 计算机视觉
Caused by: java.lang.UnsatisfiedLinkError: Can‘t load AMD 64-bit .dll on a IA 32-bit platform【已解决】
Caused by: java.lang.UnsatisfiedLinkError: Can‘t load AMD 64-bit .dll on a IA 32-bit platform【已解决】
5 0
|
29天前
|
Java Maven Spring
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
43 0