gpt4 book ai didi

java - 使用 GSON 反序列化 java.sql.Date 错误

转载 作者:行者123 更新时间:2023-12-01 18:11:32 33 4
gpt4 key购买 nike

我正在使用 GSON 将 JSON 字符串反序列化为 java 对象。 JSON 字符串中的日期格式为:

yyyy-mm-dd

当日期读入我的 JAVA 对象中的 java.sql.Date 字段时,月份总是以 01 或 1 月结束!很奇怪。

以下是 JSON 字符串并使用 GSON 反序列化的代码:

public static void main(String[] args)
{
String jsonString = "[{\"date\":\"2015-02-14\"},{\"date\":\"2015-03-15\"},{\"date\":\"2015-04-16\"}]";

Type type = new TypeToken<List<TestObject>>(){}.getType();
Gson gsonReceiver = new GsonBuilder().setDateFormat("yyyy-mm-dd").create();
List<TestObject> objectList = gsonReceiver.fromJson(jsonString, type);

for(int i=0; i < objectList.size(); i++) {
System.out.println("objectList[" + i + "] = " + objectList.get(i).toString());
}
}

这是 TestObject 的代码: 公共(public)类测试对象{

private Date date;

public TestObject(Date date) {
this.date = date;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "TestObject [date=" + date + "]";
}

}

如果运行这段代码,新对象中的日期将打印为:

objectList[0] = TestObject [date=2015-01-14]
objectList[1] = TestObject [date=2015-01-15]
objectList[2] = TestObject [date=2015-01-16]

这实在是太奇怪了。

我想我已经按照我应该的方式设置了日期格式 - 有人知道这里出了什么问题吗?

最佳答案

正确的格式是

yyyy-MM-dd

mm 停留几分钟。不是几个月。

这里是解释可在日期格式函数中使用的每个字母的 javadoc:link

事实上GSonBuilder使用与SimpleDateFormat相同的约定:

Note that this pattern must abide by the convention provided by SimpleDateFormat class. See the documentation in SimpleDateFormat for more information on valid date and time patterns.

关于java - 使用 GSON 反序列化 java.sql.Date 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610476/

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