【发布时间】:2015-09-16 13:47:10
【问题描述】:
我正在使用 GSON 将 JSON 字符串反序列化为 java 对象。 JSON 字符串中的日期格式为:
yyyy-mm-dd
当日期被读入我的 JAVA 对象中的 java.sql.Date 字段时,月份总是以 01 或一月结束!很奇怪。
这是 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 的代码: 公共类 TestObject {
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]
这很奇怪。
我想我已经设置了我应该设置的日期格式 - 有人知道这里出了什么问题吗?
【问题讨论】: