fromJson 引发无法解析的日期异常

fromJson raises unparseable date exception

我开发了 android 具有客户端-服务器和数据库的应用程序。

我用gson解析服务端和客户端之间的对象

我的日期类型是java.sql.date

当我 运行 此代码(消息是我创建的对象...)时:

public ArrayList<Message> getMessagesByKehilaName(String kehilaName) throws Exception {
    String result = GET(URL + "getMessagesByKehilaName?kehilaName=" + kehilaName);
    Gson gson = new Gson();
    ArrayList<Message> am = new ArrayList<Message>(Arrays.asList(gson.fromJson(result, Message[].class)));
    return am;
}

我得到这个异常:

com.google.gson.JsonSyntaxException: java.text.ParseException: Unparseable date: "2011-11-05" (at offset 0)

我的数据库上的值确实是 2011-11-05 并且我的消息日期的类型也是 java.sql.date.

为什么我有这个异常?

Gson 默认的日期适配器和日期格式不同。您需要注册 SQL 日期类型适配器,并在反序列化 JSON.

之前设置预期的日期格式
SqlDateTypeAdapter sqlAdapter = new SqlDateTypeAdapter();
Gson gson = new GsonBuilder()
   .registerTypeAdapter(java.sql.Date.class, sqlAdapter )
   .setDateFormat("yyyy-MM-dd")
   .create();

现在使用这个 gson 对象来解析数据。

编辑

已将格式从 yyyy/MM/dd 更改为 yyyy-MM-dd

我将 registerTypeAdapter 更改为 java.util.date,现在可以使用了:

        SqlDateTypeAdapter sqlAdapter = new SqlDateTypeAdapter();
        Gson gson = new GsonBuilder()
            .registerTypeAdapter(java.util.Date.class, sqlAdapter )
            .setDateFormat("yyyy-MM-dd")
            .create();

我不确定它为什么有效。我的类型是 sql.Date,但这是有效的..