java – GSon是否搞乱了Timestamp变量
发布时间:2020-12-15 05:10:33 所属栏目:Java 来源:网络整理
导读:我正在尝试通过套接字发送一个类,这一切都很好.但是,其中一个变量因为没有明显原因而搞砸了.让我进一步解释. 我正在使用的代码如下(对于客户端套接字,其中创建了GSon): while(!someQueueVariable.isEmpty()){ QueryHolder h = this.someQueueVariable.poll(
我正在尝试通过套接字发送一个类,这一切都很好.但是,其中一个变量因为没有明显原因而搞砸了.让我进一步解释.
我正在使用的代码如下(对于客户端套接字,其中创建了GSon): while(!someQueueVariable.isEmpty()){ QueryHolder h = this.someQueueVariable.poll(); Gson g = new Gson(); String send = g.toJson(h); out.println(send); } QueryHolder是一个包含两个字符串和一个Object []的简单类. 我尝试了Netbeans的内置调试器,这些变量存在: 用蓝色突出显示的那些是你应该看的.正如你所看到的,首先是一个Timestamp对象,其值为2013-02-18 15:49:36.415,它变成了2013年2月18日下午3:49:36.我在这里做错了吗?它是GSon中的一个错误吗? 解决方法
在讨论创建自定义序列化器/反序列化器时,Gson User’s Guide提到了这一点.您所看到的是java.sql.Timestamp对象(它是Date的子类)的默认序列化,它将以您的语言环境的格式输出/格式化它.
如果您查看Javadoc for GsonBuilder(),您将找到专门为您的问题创建的setDateFormat()方法 – 它不再需要自定义序列化程序.您只需要在JSON中提供所需的模式: public static void main(String[] args) { Timestamp t = new Timestamp(System.currentTimeMillis()); System.out.println(t); System.out.println(t.toLocaleString()); String json = new Gson().toJson(t); System.out.println(json); json = new GsonBuilder() .setDateFormat("yyyy-MM-dd hh:mm:ss.S") .create() .toJson(t); System.out.println(json); } 输出(截至目前,显然):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |