Java Gson如何将json转换为自定义类

Java Gson如何将json转换为自定义类,java,json,gson,deserialization,json-deserialization,Java,Json,Gson,Deserialization,Json Deserialization,下面的要点:我需要使用JavaGSON库从json反序列化A 我有一个api在这个模板(Json)中响应: 在Java中,我定义了一个类来读取结果: public class ApiResult <DATA> { public String code; public String message; public DATA data; } 我的一个api方法返回顶部模板中的球列表。 我使用GSON.fromJson(reader,newTypeToken(){

下面的要点:我需要使用JavaGSON库从json反序列化
A

我有一个api在这个模板(Json)中响应:

在Java中,我定义了一个类来读取结果:

public class ApiResult <DATA> {
    public String code;
    public String message;
    public DATA data;
}
我的一个api方法返回顶部模板中的球列表。 我使用
GSON.fromJson(reader,newTypeToken(){}.getType())

但Gson在
列表中读取数据


如何解决这个问题?

最后我解决了我的问题,但不是所有的
A
问题

我将我的
apireult
类重新定义为:

public class ApiResult {
    public String code;
    public String message;
    public JsonElement data; 
}
使用
result=GSON.fromJson(reader,apireult.class)我提取全局响应(所有api响应都返回此部分)。
并检查我需要的
code
message

然后我使用
final List data=GSON.fromJson(result.data,new-TypeToken(){}.getType())提取我想要的真实数据
并返回它

我认为Gson的主要缺陷/限制是它只检查父类型的泛型类型一次,而不检查泛型类型[s]


我认为最好是他们(其开发人员)将其添加到下一个版本中

最后我解决了我的问题,但不是所有的
A
问题

我将我的
apireult
类重新定义为:

public class ApiResult {
    public String code;
    public String message;
    public JsonElement data; 
}
使用
result=GSON.fromJson(reader,apireult.class)我提取全局响应(所有api响应都返回此部分)。
并检查我需要的
code
message

然后我使用
final List data=GSON.fromJson(result.data,new-TypeToken(){}.getType())提取我想要的真实数据
并返回它

我认为Gson的主要缺陷/限制是它只检查父类型的泛型类型一次,而不检查泛型类型[s]


我认为最好是他们(其开发人员)将其添加到下一个版本中

您能提供完整的JSON示例吗?是的,我想我曾经遇到过同样的问题。。。尝试声明一个
公共类BallListApiResult扩展了ApiResult
-我很有信心这会起作用(因为我在一个项目中有完全相同的结构),但我无法解释为什么您的方法不。。。如果有人可以的话会很酷…另一个问题是我有很多数据,不仅仅是球和。。。(因为我的每个api方法的api结构都有不同的数据,顺便说一句,我需要许多自定义的额外类来捕获它们)是的,但是这些类中的每一个都只有几行-我们的
抽象响应
也有大约30个子类。但是你试过了吗?它有效吗?在我当前的项目中,我有一种方法来分析响应“代码”,然后返回数据。如果我能从类中创建类并将其传递给GSON.fromJson(reader,clazz)exept GSON.fromJson(reader,type)它工作正常你能包含一个完整的JSON示例吗?是的,我想我曾经遇到过同样的问题。。。尝试声明一个
公共类BallListApiResult扩展了ApiResult
-我很有信心这会起作用(因为我在一个项目中有完全相同的结构),但我无法解释为什么您的方法不。。。如果有人可以的话会很酷…另一个问题是我有很多数据,不仅仅是球和。。。(因为我的每个api方法的api结构都有不同的数据,顺便说一句,我需要许多自定义的额外类来捕获它们)是的,但是这些类中的每一个都只有几行-我们的
抽象响应
也有大约30个子类。但是你试过了吗?它有效吗?在我当前的项目中,我有一种方法来分析响应“代码”,然后返回数据。如果我可以从类中创建类并将其传递给GSON.fromJson(reader,clazz)exept GSON.fromJson(reader,type),它将正常工作
public class ApiResult {
    public String code;
    public String message;
    public JsonElement data; 
}