Android 改装空\空日期处理

Android 改装空\空日期处理,android,date,exception,retrofit,pojo,Android,Date,Exception,Retrofit,Pojo,我的POJO中有日期字段,我使用改型来解析JSON。在某些情况下,此字段的返回值可以为空或null。我得到一个错误: Caused by: java.text.ParseException: Unparseable date: "" (at offset 0) at java.text.DateFormat.parse(DateFormat.java:618) at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultD

我的POJO中有日期字段,我使用改型来解析JSON。在某些情况下,此字段的返回值可以为空或null。我得到一个错误:

Caused by: java.text.ParseException: Unparseable date: "" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:618)
at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:105)

有什么聪明的方法可以通过改造来处理此异常吗?

您应该为
日期类注册一个自定义
反序列化程序

GsonBuilder gBuilder = new GsonBuilder();
gBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { .... }
Gson gSon = gBuilder.create();

添加Gson时,请使用以下选项:

   Gson gson = new GsonBuilder().serializeNulls().create();
如果不添加旧的改装,应如下所示:

Gson gson = new GsonBuilder()
            .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
            .create();

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .setEndpoint(BASE_URL)
            .setConverter(new GsonConverter(gson))
            .build();
请看:

我也认为有一个非常相似的问题

Gson gson = new GsonBuilder()
            .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
            .create();

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .setEndpoint(BASE_URL)
            .setConverter(new GsonConverter(gson))
            .build();