2012-09-04 57 views
1

我有一個名爲DateTime的自定義對象。我用方法registerTypeAdapter註冊了TypeAdapter。我認爲GSON忽略了這個適配器。 GSON如何檢測json對象中的日期?是否需要在json中建立適配器和字符串格式之間的任何鏈接?GSON日期序列化JsonSyntaxException

builder.registerTypeAdapter(DateTime.class, new JsonDeserializer<DateTime>() 
      { 

      public DateTime deserialize(JsonElement arg0, Type arg1,JsonDeserializationContext arg2) throws JsonParseException 
      { 
       try{return new DateTime(arg0.getAsString());} 
       catch (Exception e){ 
        return null; 
        } 
      } 
}); 
+0

我已經看到日期被序列化爲長和Javascript日期字符串。所以檢測日期取決於序列化。 –

+0

我的日期的字符串模式與通常的日期模式不同。 GSON將此屬性檢測爲日期,但它使用其默認日期類型適配器。 – magirtopcu

+0

你正在編組什麼課程? –

回答

0

Json出現在名稱/值對中。你幾乎肯定會得到一個例外,並吃掉它。您需要提取名稱/值對的值以傳入新的DateTime。如果你的JSON類似於{「date」:213424234},那麼你需要這樣做:

DateTime date = new DateTime(jsonElement.getAsJsonObject().get("date").getAsLong());