我正在使用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的代码: 公共类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]
这很简单。
我想我已经设置了我应该的日期格式 - 任何人都知道这里出了什么问题?
答案 0 :(得分:4)
正确的格式是
yyyy-MM-dd
mm
停留几分钟。不是几个月。
以下是解释可用于日期格式函数的每个字母的javadoc:link
Infact GSonBuilder
使用与SimpleDateFormat
:
请注意,此模式必须遵守SimpleDateFormat类提供的约定。有关有效日期和时间模式的详细信息,请参阅SimpleDateFormat中的文档。