在上一篇我们讲到过,使用 GSON 序列化进行转换对象异常的问题,已经解决了序列化对象的问题,却又发现,转换时间的问题,真的是一环扣一环,无限坑
[ { "webName":"izpan", "webUrl":"izpan.com", "webDate": "2020-07-11 18:12:58" } ]
序列化
List webDOS = new Gson().fromJson(json, new TypeToken<List>(){}.getType());
抛了异常,异常信息:
W/System.err: com.google.gson.JsonSyntaxException: 2020-07-11 18:12:58 at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:87) at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:75) at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:46) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61) at com.google.gson.Gson.fromJson(Gson.java:927) at com.google.gson.Gson.fromJson(Gson.java:892) at com.google.gson.Gson.fromJson(Gson.java:841) ...
解决这问题也很简单:
在 new GSON() 初始化的时候,指定它的时间格式即可
Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create();
再次序列化
List webDOS = gson.fromJson(json, new TypeToken<List>(){}.getType());