由于您在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没有定义标准的日期格式。日期可以是任何字符格式,也可以是自某个时间点以来的秒或毫秒 - 完全取决于发件人。 –