2016-12-18 7 views
1

は、私は、カスタム日付デシリアライザを作成:GsonのデフォルトのDateTypeAdapterを上書きする方法は?

private static class DateJsonDeserializer implements JsonDeserializer<Date>{ 

    @Override 
    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 
     for (String format : DATE_FORMATS) { 
      try { 
       SimpleDateFormat df = new SimpleDateFormat(format); 
       return df.parse(json.getAsString()); 
      } catch (ParseException e) { 
      } 
     } 
     throw new JsonParseException("Unparseable date: \"" + json.getAsString() 
       + "\". Supported formats: " + Arrays.toString(DATE_FORMATS)); 
    } 
} 

私はgsonBuilderにこれを追加しました:

gsonBuilder.registerTypeAdapter(Date.class, new DateJsonDeserializer()); 

しかし、私は、なぜ、私が使用しDateTypeAdapterクラスで構築された参照日付を解析したい場合は?日付デシリアライザを使用したいと思います。 私はretrofit 2.1.0、Gson 2.8.0、converter-gson 2.1.0を使用しています。

答えて

0

Date.classは正しいクラスですか?たぶんそれはDate.classのサブクラスを使用していますか?

+1

私はどこでもjava.util.Dateクラスを使用しています。私はretrofitのconverterFactoriesをチェックして、最初のものはBuiltInConvertersであり、最初に呼び出され、例外がスローされたDateTypeAdapterが含まれていることがわかります。 – just

関連する問題