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

标签 java json gson deserialization json-deserialization

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 响应都返回这部分)。 并检查codemessage我需要的

然后我用 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/

相关文章:

java - 将 JSON 类反序列化为不同名称的 Java 类

php - Proguard 和 Gson - 转换 arraylist 内的变量名称

不使用 element.hashCode() 的 java.util.Set 实现

java - 配置Gson改变json中的key

java - 使用 Gson 从 JSON 字符串反序列化 iso-8601 格式的日期时出现问题

javascript - 带方法的 JSON 对象的正确术语是什么?

ruby-on-rails - JSON 包含语法

Java/Junit : how to test if an external program/process/application is running?

java - EJB 中的多线程

java - 查找数组之间的相似值