Lol*_*ewn 3 java timestamp gson
我正在尝试通过套接字发送一个类,这一切都很好.但是,其中一个变量因为没有明显原因而搞砸了.让我进一步解释.
我正在使用的代码如下(对于客户端套接字,其中创建了GSon):
while(!someQueueVariable.isEmpty()){
QueryHolder h = this.someQueueVariable.poll();
Gson g = new Gson();
String send = g.toJson(h);
out.println(send);
}
Run Code Online (Sandbox Code Playgroud)
QueryHolder是一个包含两个Strings和一个的简单类Object[].
我尝试了Netbeans的内置调试器,这些变量存在:
用蓝色突出显示的那些是你应该看的.正如您所看到的,首先是一个Timestamp对象,其值为2013-02-18 15:49:36.415,已被转换为Feb 18, 2013 3:49:36PM.我在这里做错了吗?它是GSon中的一个错误吗?
Bri*_*ach 11
在讨论创建自定义序列化器/反序列化器时,Gson用户指南提到了这一点.您所看到的是您的java.sql.Timestamp对象(它的子类Date)的默认序列化,它将以您的语言环境的格式输出/格式化它.
如果您查看GavBuilder()的Javadoc,您将找到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);
}
Run Code Online (Sandbox Code Playgroud)
输出(截至目前,显然):
2013-02-18 11:32:21.825
2013年2月18日上午11:32:21
"2013年2月18日上午11:32:21"
"2013-02-18 11:32:21.825"
| 归档时间: |
|
| 查看次数: |
10436 次 |
| 最近记录: |