Gson如何将json转换为Custom Class

时间:2015-08-23 15:46:02

标签: java json gson deserialization json-deserialization

  

下面的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

中读取数据

我该如何解决这个问题?

1 个答案:

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

然后我用final List<Ball> data = GSON.fromJson(result.data, new TypeToken<List<Ball>>() {}.getType());提取我想要的实际数据并将其返回

我认为Gson中的主要错误/限制是它只检查父类型的通用类型一次,并且不检查通用类型[s]

我认为他们(开发者)将其添加到下一个版本

会更好