Google GSON GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss)不能格式化Data
Google GSON GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")不能格式化Data
在项目中遇到问题,数据库中保存的时间类型为datetime(MySQL),实体类中对应数据类型为java.sql.Date,利用GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")构造gson对象向客户端输出json字符串。忽一日客户端接收到的日期字段值为中文时间,大惊,彻查,疑为实体类中的数据类型不适合,导致Hibernate中的timestamp部分信息丢失,尝试着将实体类中类型改为java.sql.Timestamp,再试,成功。
另搜索到网上一哥们的其他解法,如下:
首先创建一个类型适配器
- public class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp>{
- private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- public JsonElement serialize(Timestamp ts, Type t, JsonSerializationContext jsc) {
- String dfString = format.format(new Date(ts.getTime()));
- return new JsonPrimitive(dfString);
- }
- public Timestamp deserialize(JsonElement json, Type t, JsonDeserializationContext jsc) throws JsonParseException {
- if (!(json instanceof JsonPrimitive)) {
- throw new JsonParseException("The date should be a string value");
- }
- try {
- Date date = format.parse(json.getAsString());
- return new Timestamp(date.getTime());
- } catch (ParseException e) {
- throw new JsonParseException(e);
- }
- }
- }
应用类型适配器
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");
- gsonBuilder.registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter());
- Gson GSON = gsonBuilder.create();
- String json = GSON.toJson(new Timestamp((new Date()).getTime()));
Google GSON GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss)不能格式化Data相关推荐
- 【怒怼老乔】苹果手机ios系统居然特喵的不支持日期yyyy-MM-dd HH:mm:ss.ms,只支持 yyyy/MM/dd HH:mm:ss
苹果手机ios系统居然特喵的 不支持日期yyyy-MM-dd HH:mm:ss.ms, 只支持yyyy/MM/dd HH:mm:ss 我只能用 .replace(/\-/g,'\/'); 来替换掉了, ...
- Kettle5.2 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]
使用kettle出现 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS] 试了各种方法,最后发 ...
- C# 中的年月日时分秒 yyyy MM dd HH mm ss
C# 中的年月日时分秒 yyyy MM dd HH mm ss 其中大小写含义不同,不能混用 年:yyyy 月:MM 日:dd(1-31) DD(0-365) 时:hh:12小时制 HH:24小时制 ...
- 时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm
1. 相应的业务场景 1.1 场景简介 正值2019年末,2020年初之际,系统日期时间为2019/12/31而系统报表却出现了2020/12/31的日期. 1.2 代码案例如下 2.Java中YYY ...
- spring boot + vue 前后端分离时间戳转换为 yyyy:MM:dd HH:mm:ss格式
后端 1.model(entity)注释直接转换 当返回类型为resultMap,在entity类里面相应属性上加上以下注释 @JsonFormat(pattern="yyyy-MM-dd ...
- js时间格式化 YYYY/MM/DD HH:MM:SSS
/*** 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式* @param time*/ function timeFormat(time ...
- java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...
首先,我想知道是否存在类似于SimpleDateFormat但是支持通配符的现有库?如果没有,最好的办法是什么? 我有这个问题,我需要匹配并从文件名中提取日期,但我似乎无法找到适合这种情况的方法.虽然 ...
- 小程序日期格式(yyyy-MM-dd HH:mm:ss)转(yyyy/MM/dd HH:mm:ss)
let newDate = (date).replace(/-/g, '/'); var date = new Date(newDate).getTime(); 转载于:https://www.cnb ...
- java date eee_java将 Date原始格式EEE MMM dd HH:mm:ss Z yyyy转成指定格式
java将 Date原始格式"EEE MMM dd HH:mm:ss Z yyyy"转成指定格式 //将 Date原始格式"EEE MMM dd HH:mm:ss Z y ...
最新文章
- servlet response 中文乱码
- 继承SectionIndexer,实现联系人侧边栏
- Python学习之函数及流程控制
- XCTF WEB webshell
- 在路上(on the road)
- Android的ADB工具使用
- 怎么将matlab滤波器系数导出_matlab与FPGA数字信号处理系列(1)——通过matlab工具箱设计FIR数字滤波器...
- 英语 用on还是/at/还是in
- 三点外接圆_故地重游伪切圆——伪外接圆的基本性质
- 这家武汉工厂如果停工,全球都不答应
- (转)getElementByID getElementsByName getElementsByTagName用法详解
- 带你了解FPGA(5)--Verilog书写规范
- python __del__
- pythonATM,购物车项目实战6-用户登录功能的实现
- 专业能力与行业价值 IBM在华的商业人工智能实践
- NOD32病毒库自动更新代码
- java基础——数据库
- 微信小程序学习笔记:选项卡
- 计算机计划实施800字,大学计划书范文800字3篇
- 光流传感器 定位精度_基于光流传感器的移动机器人定位方法