java宝石迷阵代码_Android处理java的date数据的问题
背景
直接在接口中转Date对象时候,Gson默认只会序列化/反序列化 Date().toString()后的字符串,类似 Oct 16, 2015 12:28:22 PM ,使用gson解析后台返回的数据时,无意发现了一个问题,如果使用 Date 类型的数据,将会出现这样的情形:
数据:"firstDataTime" : { "date" : 29, "day" : 5, "hours" : 14, "minutes" : 37, "month" : 6, "seconds" : 14, "time" : 1469774234000, "timezoneOffset" : -480, "year" : 116 }
解析时,就会出现两个问题:
必须按照对象来解析,这个,Date对象不是这样子的啊,直接按照Date型解析肯定出问题;
使用时基本上不会使用Date对象,都需要格式化或转换为String型的数据,所以也不能直接使用; 所以,使用时各种不方便,可是Gson这么强大的工具能考虑不到这个问题吗,显然不是,只是自己孤陋寡闻罢了
解决
定义一个抽象类,同时实现序列化和反序列化接口,如下 public abstract class GsonTypeAdapter implements JsonSerializer, JsonDeserializer {}
在使用gson解析时,集成上述GsonTypeAdapter,实现相应的序列化和反序列化方法,即可
解析,使用GsonBuilder.registerTypeAdapter,初始化Gson对象, Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class, new GsonTypeAdapter(){// 方法实现 } ).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
给个例子:
Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class, new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
class TimestampTypeAdapter implements JsonSerializer, JsonDeserializer {
public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
String dateFormatAsString = format.format(new Date(src.getTime()));
return new JsonPrimitive(dateFormatAsString);
}
public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (!(json instanceof JsonPrimitive)) {
throw new JsonParseException("The date should be a string value");
}
try {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
Date date = (Date) format.parse(json.getAsString());
return new Timestamp(date.getTime());
} catch (Exception e) {
throw new JsonParseException(e);
}
}
}
其他,正常使用gson解析即可
java宝石迷阵代码_Android处理java的date数据的问题相关推荐
- java宝石迷阵代码_java 创建一个board,然后在上面像宝石迷阵一样随机生成各种宝石...
展开全部 import java.awt.GridLayout;import java.awt.Image; import javax.swing.ImageIcon; import javax.sw ...
- java调节音量代码_用Java调用VC音量控制程序_java
前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...
- java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...
我正在尝试创建一个程序,要求用户提供正方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来.我几乎了解了,除了我似乎不太了解矩形的右边以正确打印出来- 这是我的代码: import java.uti ...
- java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
最近在复习java,下学期要用,写这个练手. 技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...
- java 生成客户端代码_swagger-codegen生成java客户端代码
前后端分离的时候,需要建立契约,Swagger可达到该目的(略). 建立Rest接口后,通过swagger-codegen项目可以自动生成对应的客户端代码(c++.php.java.js.node等等 ...
- java 测试用例核心代码_核心Java测验
java 测试用例核心代码 Welcome to Core Java Quiz. Java is an object-oriented programming language. 欢迎来到Core J ...
- java好的代码_做java软件工程师,怎样才能写出好的代码?
原标题:做java软件工程师,怎样才能写出好的代码? Java代码之于java程序员而言就是左膀右臂,java代码写的好的java程序员明显更是企业的欢迎,一个优秀的java程序员的考核标准之一也是看 ...
- java android程序代码_用java 代码读取android应用的一些基本信息
Android 应用现在到处都是,如果下载一个apk , 不借助与其他工具,你能得到这个应用的版本号,包名入口等信息吗.其实我们完全可以自己写段 java 代码来得到这些信息.下面是测试代码:pack ...
- java4android代码_Android逆向-java代码基础(4)
[TOC] 0x00 前言 微博:HAI_AI_ZHUZHU I春秋:HAI_ 看这篇可以先看看之前的文章,进行一个了解. Android逆向-java代码基础(1) Android逆向-java代码 ...
最新文章
- ehlib 用法记录
- Tiny4412裸机程序,按键检测(轮询方式)
- 深入理解JVM(5) : Java垃圾收集器
- A - Sliding Window POJ - 2823
- 从数学到密码学(八)
- 轮播图高度自适应_【2020顶会NIPS】用于交通预测的自适应图卷积循环网络
- 测试h265和h264的编码效果
- win10查看激活时间(Win10查看激活信息)
- 利用服务器在家远程登录办公室电脑
- 高性能核心板IDO-SOM3908-V1:接口丰富,性能更强,速度更快!
- linux卸载phpstudy_centos
- TCP/IP中的拥塞窗口控制机制
- CSDN勤写标兵勋章获取方法
- Excel可视化(2):13个变种图使用技巧
- 红队快速打点工具(POC bomber)
- 深度学习与计算机视觉-6章 Python-OpenCV
- bus hound 使用介绍
- 如何监控和保护Linux下进程安全
- 鲁大师性能测试要装什么软件吗,鲁大师怎么给电脑跑分?赶快看看你的电脑性能如何吧!...
- 小马识途谈如何利用全网营销打造营销闭环