由於您在POJO中有多個Date
字段,並且包含JSON的日期格式不同,所以您需要爲Date
編寫一個可以處理這些格式的自定義解串器。
class DateDeserializer implements JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException
{
String myDate = je.getAsString();
// inspect string using regexes
// convert string to Date
// return Date object
}
}
創建GSON實例時,您可以將其註冊爲一個類型的適配器:
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateDeserializer())
.create();
你可以,當然,也只寫你的POJO自定義解串器和自己從填充一切解析樹。
另一種選擇是在POJO中簡單地將它們設置爲String
,然後讓每個字段的獲得者將它們轉換爲Date
。
除此之外,如果您沒有完全使用Gson,那麼Jackson JSON解析器(默認情況下)會在反序列化過程中使用POJO的setter,這會讓您明確控制設置每個字段。
請注意,JSON沒有定義標準的日期格式。日期可以是任何字符格式,也可以是自某個時間點以來的秒或毫秒 - 完全取決於發件人。 –