Java Gson如何将json转换为自定义类
下面的要点:我需要使用JavaGSON库从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(){
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;
}