gpt4 book ai didi

java - GSon是否弄乱了时间戳变量

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:55 27 4
gpt4 key购买 nike

我正在尝试通过套接字发送一个类,这一切工作正常。但是,其中一个变量无缘无故地被弄乱了。让我进一步解释。

我使用的代码如下(对于创建 GSon 的客户端套接字):

while(!someQueueVariable.isEmpty()){
QueryHolder h = this.someQueueVariable.poll();
Gson g = new Gson();
String send = g.toJson(h);
out.println(send);
}

QueryHolder 是一个简单的类,它包含两个 Strings 和一个 Object[]

我尝试了 Netbeans 的内置调试器,并且存在以下变量: Variables以蓝色突出显示的是您应该查看的内容。如您所见,首先是一个值为 2013-02-18 15:49:36.415 的 Timestamp 对象,它变成了 Feb 18, 2013 3:49:36PM。我在这里做错了什么吗?这是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);
}

输出(显然是现在):

2013-02-18 11:32:21.825
Feb 18, 2013 11:32:21 AM
"Feb 18, 2013 11:32:21 AM"
"2013-02-18 11:32:21.825"

关于java - GSon是否弄乱了时间戳变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com