2015-10-26 27 views
0

我在我的POJO中有Date字段,我使用翻新來解析JSON。在某些情況下,此字段的返回值可以爲空或爲空。我得到的錯誤:Retrofit null empty處理日期

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) 

有沒有什麼聰明的方法來處理這種異常與改造?

回答

1

你應該註冊一個定製DeserializerDate

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

時調用的回調,格式化日期前檢查JsonElement的內容,並採取相應的行動。

不要忘了用你創建的Gson實例調用addConverterFactory。例如

.addConverterFactory(GsonConverterFactory.create(gSon)) 
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