我的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)
是否有任何智能方法可以通过改造来处理此异常?
答案 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
而且我认为还有一个非常相似的问题。