扩展Google库方法的最佳方式

时间:2015-06-22 10:21:10

标签: java json gson static-libraries

我开发了一个使用com.google.gson.Gson(gson-2.2.4.jar)的Java程序。该方法将在案例日期格式ISO 8601中抛出异常(例如:“2015-06-22T09:26:27 + 0000”)

com.google.gson.JsonSyntaxException: 2015-06-22T09:26:27+0000
    at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:107) ~[gson-2.2.4.jar:na]
    at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:82) ~[gson-2.2.4.jar:na]
    at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:35) ~[gson-2.2.4.jar:na]
    at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58) ~[gson-2.2.4.jar:na]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) ~[gson-2.2.4.jar:na]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) ~[gson-2.2.4.jar:na]
    at com.google.gson.Gson.fromJson(Gson.java:803) ~[gson-2.2.4.jar:na]
    at com.google.gson.Gson.fromJson(Gson.java:768) ~[gson-2.2.4.jar:na]
    at com.google.gson.Gson.fromJson(Gson.java:717) ~[gson-2.2.4.jar:na]
    at com.google.gson.Gson.fromJson(Gson.java:689) ~[gson-2.2.4.jar:na]

要修复它,我有两种方法

  1. Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssX").create(); ==>申请所有gson对象==>改变~50个职位

  2. 将Google的库解压缩为我的程序的实用程序,并更改DefaultDateTypeAdapter.deserializeToDate()函数以处理此错误。之后我会将谷歌库中的导入更改为我的实用程序库==>改变~20个文件

  3. 最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

只需使用此类型的适配器:

https://raw.githubusercontent.com/google/gson/master/extras/src/main/java/com/google/gson/typeadapters/UtcDateTypeAdapter.java

    final GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(Date.class, new UtcDateTypeAdapter());
    final Gson gson = gsonBuilder.create();