GSON 序列化解析时间异常

在上一篇我们讲到过,使用 GSON 序列化进行转换对象异常的问题,已经解决了序列化对象的问题,却又发现,转换时间的问题,真的是一环扣一环,无限坑

泛型在使用 GSON 解析转换 LinkedTreeMap 无法正常解析

GSON 解析带泛型的 JSON 数组 LinkedTreeMap 的问题 在使用泛型的时候,使用 new G
[
  {
      "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());
后端开发

泛型在使用 GSON 解析转换 LinkedTreeMap 无法正常解析

2020-7-11 18:33:16

后端开发

Gson 通用的工具包 GSONUtils

2020-7-13 9:46:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索