下面的Somary:我需要使用Java Gson库从json中对
A<B<C>>
进行deserilize
我有一个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>
而非List
我该如何解决这个问题?
答案 0 :(得分:0)
最后,我解决了我的问题,但并未解决所有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]
我认为他们(开发者)将其添加到下一个版本
会更好