Somary for below: I need to deserilize
A<B<C>>
from json with Java Gson library
我有一个在此模板中响应的 api (Json):
{code:string, message:string, data:(any json type/object/array)}
在Java中,我定义了一个类来读取结果:
public class ApiResult <DATA> {
public String code;
public String message;
public DATA data;
}
我还有另一个数据类:
public class Ball {
public String color;
public String weight;
}
我的一个 api 方法返回顶部模板中的球列表。
我用GSON.fromJson(reader, new TypeToken<ApiResult<List<Ball>>>() {}.getType());
但是Gson读取了List<com.google.gson.internal.LinkedTreeMap>
中的数据未列出
我该如何解决这个问题?
最佳答案
终于我解决了我的问题,但不是全部A<B<C>>
问题
我重新定义了我的ApiResult
类:
public class ApiResult {
public String code;
public String message;
public JsonElement data;
}
使用result = GSON.fromJson(reader, ApiResult.class);
我提取全局响应(所有 api 响应都返回这部分)。
并检查code
和message
我需要的
然后我用 final List<Ball> data = GSON.fromJson(result.data, new TypeToken<List<Ball>>() {}.getType());
提取我想要的真实数据并返回
我认为 Gson 的主要错误/限制是它只检查父类型的泛型类型一次,并且不检查泛型类型[s]
我认为他们(其开发人员)最好将其添加到下一个版本中
关于java - Gson如何将json转换为自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168484/