今天遇到了一个比较特殊的需求,服务端返回json的时间格式是2017-02-17T01:25:34中间有一个“T”,使用GSON时需要注意格式转化问题。 最简单的处理方法
注意:”T”需要进行转义,要转义的字符用上单引号括上
这种方法比较灵活,可以用到其他的更加复杂的情况。
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, AbnormalDateFormatter.formatter()).create();其中:AbnormalDateFormatter接口继承JsonSerializer和JsonDeserializer接口
贴出AbnormalDateFormatter类的实现
class AbnormalDateFormatter implements JsonSerializer<Date>, JsonDeserializer<Date> { @Override public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); try { return fmt.parse(jsonElement.getAsString()); } catch (ParseException e) { e.PRintStackTrace(); } return null; } @Override public JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { return date == null ? null : new JsonPrimitive(date.getTime()); } public static AbnormalDateFormatter formatter() { return new AbnormalDateFormatter(); }}新闻热点
疑难解答