Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GSON反序列化错误地转换java.sql.Date_Java_Json_Gson - Fatal编程技术网

使用GSON反序列化错误地转换java.sql.Date

使用GSON反序列化错误地转换java.sql.Date,java,json,gson,Java,Json,Gson,我使用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\"},{\

我使用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());          
    }
}
}

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

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,它解释了可以在日期格式函数中使用的每个字母:

实际上,
GSonBuilder
使用了与
SimpleDateFormat
相同的约定:

请注意,此模式必须遵守SimpleDataFormat类提供的约定。有关有效日期和时间模式的更多信息,请参阅SimpleDataFormat中的文档

正确的格式是

yyyy-MM-dd
mm
停留几分钟。不是几个月

下面是javadoc,它解释了可以在日期格式函数中使用的每个字母:

实际上,
GSonBuilder
使用了与
SimpleDateFormat
相同的约定:

请注意,此模式必须遵守SimpleDataFormat类提供的约定。有关有效日期和时间模式的更多信息,请参阅SimpleDataFormat中的文档


啊!谢谢戴维德,这让我发疯了!Tom如果您觉得答案有用且正确,您可以向上投票,并使用绿色标志选择正确答案。非常感谢。只要等12分钟就行了!啊!谢谢戴维德,这让我发疯了!Tom如果您觉得答案有用且正确,您可以向上投票,并使用绿色标志选择正确答案。非常感谢。只要等12分钟就行了!