首页 > 其他 > 详细

为Gson设置日期数据的转换格式

时间:2021-05-19 10:13:14      阅读:15      评论:0      收藏:0      [点我收藏+]

为Gson设置日期数据的转换格式

背景

最近准备把一个APP对应的SDK工具的HTTP请求实现方式由Jersey换成HttpClient(现在已经叫做Http Component Client),需要发HTTP Request的时候把对象转换为json,接受HTTP Response的时候再把json转为对象。

选型

我们知道JAVA世界里面主流的JSON转换工具有Jackson,Gson,当然还有我们阿里的fastjson。

其中Jackson算是用的最古老也是应用相当广泛的一种,并且跟SpringBoot高度集成,可以通过SpringBoot的配置文件(profile)直接设置一些属性,非常的方便。

而由于SDK是提供给调用某个APP的工具JAR包,本身不具备独立运行的能力,所以没有导入SpringBoot。

因此考虑使用Gson,顺便学习一下。

问题与解决

一般来写代码来实现我们的需求的过程中都不是一帆风顺,果然这次也不例外。

不过不慌,遇到问题说明学习进步的时候到了,让我们看看这次都碰到了哪些问题。

1. 日期类型转换精度丢失

public static void main(String[] args){
    java.sql.Timestamp time = new Timestamp(System.currentTimeMillis());
    Gson gson = new GsonBuilder().create();
    System.out.println(time.equals(gson.fromJson(gson.toJson(time),
                                                 java.sql.Timestamp.class)));
}

我们考虑上面的代码输出什么,希望是输出true,结果是false。

那么是怎么一回事,调试后一看,原来gson转化的日期数据丢失了毫秒。

抱着严谨的态度调查了一下,原来Gson默认使用yyyy-MM-dd HH:mm:ss的format来进行解析,那我们可以改变这个format吗,答案是可以的。

public static void main(String[] args){
    java.sql.Timestamp time = new Timestamp(System.currentTimeMillis());
    Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create();
    System.out.println(time.equals(gson.fromJson(gson.toJson(time),
                                                 java.sql.Timestamp.class)));
}

使用“.SSS”表示三位毫秒。

为Gson设置日期数据的转换格式

原文:https://www.cnblogs.com/Lucifer-Jiang/p/14783350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!