- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在将列表转换为 json 时,必须使用 TypeToken
(如 Gson 文档中的建议)作为类型,如下所示 -
new Gson().toJson(dateRange, new TypeToken<List<String>>() {}.getType());
对我来说,下面的代码也有效 -
new Gson().toJson(dateRange, List.class);
只是想确保代码不会被破坏。
最佳答案
根据文档 -
If the object that your are serializing/deserializing is a
ParameterizedType
(i.e. contains at least one type parameter and may be an array) then you must use thetoJson(Object, Type)
orfromJson(String, Type)
method. Here is an example for serializing and deserializing aParameterizedType
:
Type listType = new TypeToken<List<String>>() {}.getType();
List<String> target = new LinkedList<String>();
target.add("blah");
Gson gson = new Gson();
String json = gson.toJson(target, listType);
List<String> target2 = gson.fromJson(json, listType);
这是特例,其他情况可以直接使用类类型。供引用 - http://google.github.io/gson/apidocs/com/google/gson/Gson.html
希望对你有帮助
关于java - 强制使用 TypeToken?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48580776/
我正在尝试解决反序列化 HashMap 时遇到的问题。为了寻找答案,我发现了以下问题: com.google.gson.internal.LinkedTreeMap cannot be cast to
我有TypeToken类用于表示一些通用类型,如下所示: TypeToken> listOfStrings = new TypeToken> {} 这很好用,TypeToken只是class Type
在将列表转换为 json 时,必须使用 TypeToken(如 Gson 文档中的建议)作为类型,如下所示 - new Gson().toJson(dateRange, new TypeToken>(
我有一些使用泛型和 TypeTokens 反序列化 JSON 的服务代码。需要该服务来反序列化保留其通用参数类型的复杂 TypeToken。 这是创建它的代码: TypeToken> makePol
跟进How to use TypeToken to get type parameter? ,似乎如果我使用工厂方法实例化一个类,则 TypeToken 不再能够捕获泛型类型参数。 import co
网络服务器:tomcat 网络框架:spring3 我用的是gson-2.3.1 按照错误日志 java.lang.ClassNotFoundException: com.mysite.chart.*
我正在使用 Guava TypeToken在我的项目中上课,但我得到了意想不到的结果。 我有MyGenericClass : public class MyGenericClass implement
我知道在 Java 中与 C# 泛型相反,例如,C# 泛型是编译时特性,并且通过类型删除被删除。那么,Gson 的 TypeToken 究竟是如何工作的呢?它如何获取对象的泛型类型? 最佳答案 Fro
我正在开发一个框架,用于为 Selenium 测试框架构建通用菜单,并且我一直在使用 Guava TypeToken 来解析通用参数的类型,但现在我遇到了一个问题,类型 token 没有解析参数: 我
我有以下结构的 map Map即转换为 gson new Gson().toJson(obj);为了设置转换 Identity 对象的规则,我使用此结构 new TypeToken(){}.getTy
我的类 TypeRegisterer 允许客户端注册参数化类型(使用与 TypeRegisterer 相同的参数),然后使用其原始类型名称实例化它们。 我当前的解决方案有效,但我有一个未经检查的强制转
由于 Java 中没有类型文字,TypeToken通常使用技巧。比如说,你想要一个 Type表示 List 的实例,你会这样做: new TypeToken>(){}.getType() 现在,我想知
我想做这样的事情——使用 Gson 反序列化一个具有通用类型的类。下面的代码就像一个魅力。 Type type = new TypeToken>() {}.getType(); ActionTask
我为一种名为 ASN.1 的文件格式编写了一个解析器,它使用 Guice 的 TypeLiteral.getFieldType(Field)将通用字段转换为特定的 Java 类型,以便我可以构造正确的
我想将不同的列表集合传递给 GSON 中的 TypeToken 类。这是我的课 public class ConvertToObject { public T MappFrom(InputStrea
我无法理解TypeToken谷歌的 GSON api 的 fromJson方法。下面的代码对我来说理解起来非常复杂...... Gson gson = new Gson();
我可以获取任何类类型的 com.google.gson.reflect.TypeToken,例如 String Type responseType = new TypeToken() {
在 GSON 中,我接下来可以: Type envelopeType = TypeToken.getParameterized(RestResponse.class, type).getType();
我正在将 TypeToken 传递给方法。下面的代码可以工作,但我担心如果不明确地将 Object list 定义为更具体的东西,稍后会困扰我,但我无法找到一种方法将其定义为或将其转换为其他任何东西而
我有两个代码片段执行完全相同的操作。如果可以使用Class,那么什么场景下会使用TypeToken? public static List readJsonArray(String filename
我是一名优秀的程序员,十分优秀!