【发布时间】:2015-08-23 15:46:02
【问题描述】:
以下内容:我需要使用 Java Gson 库从 json 中反序列化
A<B<C>>
我在这个模板(Json)中有一个响应的 api:
{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
我该如何解决这个问题?
【问题讨论】:
-
您能edit 包含完整的 JSON 示例吗?
-
是的,我想我曾经遇到过同样的问题...尝试声明
public class BallListApiResult extends ApiResult<List<Ball>>- 我非常有信心这应该有效(因为我在项目中具有完全相同的结构),但是我无法解释为什么你的方式不......如果有人可以......会很酷...... -
另一个问题是我有很多数据,不仅是 Ball 和 ...(因为我的每个 api 方法的 api 结构我都有不同的数据,顺便说一句,我需要许多自定义额外类来捕获它们)
-
是的,但是这些类中的每一个都只有几行 - 我们还有大约 30 个
AbstractResponse<T>的子类。但是你试过了吗?有用吗? -
在我当前的项目中,我有一种方法可以分析响应“代码”,然后返回
data。如果我可以从 Class制作 Class> 类并将其传递给 GSON.fromJson(reader, clazz) exept GSON.fromJson(reader,type) 它可以正常工作
标签: java json gson deserialization json-deserialization