改造null \ empty日期处理

时间:2015-10-26 09:12:28

标签: android date exception retrofit pojo

我的POJO中有Date字段,我使用retrofit来解析JSON。在某些情况下,此字段的返回值可以为空或为空。我得到错误:

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)

是否有任何智能方法可以通过改造来处理此异常?

2 个答案:

答案 0 :(得分:1)

您应该为Deserializer

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

调用回调时,请在格式化日期之前检查JsonElement的内容,然后采取相应措施。

请勿忘记使用您创建的Gson实例调用addConverterFactory。例如

 .addConverterFactory(GsonConverterFactory.create(gSon))

答案 1 :(得分:1)

当你添加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 DOCS

而且我认为还有一个非常相似的问题。

Gson ignoring map entries with value=null