Gson:解析generics集合
是否可以创建一个从jsson解析generics集合的方法? 我上面的aproach不起作用,因为在运行时gson在这里返回LinkedHasmaps的ArrayList,但是在编译时没有错误。
private ArrayList readArray(String json) { Gson gson = new Gson(); Type collType = new TypeToken<ArrayList>() { }.getType(); return gson.fromJson(json, collType); }
我已经在这里看过一些类似的问题: 使用Gson的generics类型 ,但我找不到解决方案,这确实有效。
TypeToken的东西要求你在编译时修改类型参数。 像ArrayList
东西。 ArrayList
不起作用。
如果您可以在运行时以某种方式获取T传递的类对象,那么您可以尝试我在如何在运行时从generics类型定义和运行时类型参数构建Java类型对象时建议的解决方案?
它看起来比大多数人想象的要简单得多:
Type collectionType = new TypeToken>(){}.getType(); ArrayList persons = gson.fromJson(response, collectionType);
无需将ParameterizedTypeImpl类复制为他的答案中建议的newacct。
默认情况下,在v2.1中,如果你不做任何事情,它将被反序列化为List
您可以为该Collection类型注册TypeAdapterFactory,然后确定实际反序列化的对象类型。
- Javagenerics代码使用javac编译,Eclipse Helios失败
- 覆盖Java中的generics集合时出错
- Javagenerics:为什么someObject.getClass()不返回Class ?
- 编码提示 – 交集类型和java枚举
- generics:确保参数类型相同
- 为什么我不能扩展接口“generics方法”并将其类型缩小到我inheritance的接口“class generic”?
- 如何为@MappedSuperclass实现Spring Data存储库
- 从Generic Supertype扩展?
- 为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?