java - 扩展谷歌库方法的最佳方式

标签 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 个文件

最好的方法是什么?

最佳答案

只需使用这种类型的适配器:

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();

关于java - 扩展谷歌库方法的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977499/

相关文章:

c# - 将日期时间从 javascript 传递给 c# (Controller)

javascript - 创建模型 REST API

java - 如何使用 Gson 序列化和反序列化 Java 8 的 java.time 类型?

java - 递归Json节点更新

java - run方法如何访问不同Thread的变量?

java - RESTEasy-Spring 集成 web 应用程序抛出神秘错误 : NoResourceFoundFailure

Java-芳香数字-输入

java - Activiy onCreate() :void in Android ProgressDialog 问题

javascript - 如何从 flickr API 获取正确的 JSON 对象

java - 解析没有列表键的 json 列表