使用Gson </t>将jsonObject作为MyClass <t>读取

时间:2015-03-02 17:16:48

标签: java json gson

我正在尝试使用Gson来解析一个包含result的json对象,该对象可以是一些我已经能够正常解析的给定类。我正在定义这样的ResultResponse类:

public class ResultResponse<T>
{
    @SerializedName("result")
    public T Response;
}

我想读它:

ResultResponse<NewTypeResponse> result = new Gson().fromJson(response, ResultResponse.class);

但我相信这不是正确的做法。我也收到了这个警告:

  

未选中的作业:&#39; rs.test.ResultResponse&#39;到#rs; test.ResultResponse

我正在寻找正确的方法来做到这一点。任何有用的答案都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果你有一个具体的T(我认为NewTypeResponse是这样的而不只是虚拟代码),你可以使用TypeToken告诉Gson这样的泛型类型:

ResultResponse<NewTypeResponse> result = new Gson().fromJson(response,
    new TypeToken<ResultResponse<NewTypeResponse>>() {}.getType());

这会创建一个扩展TypeToken的新匿名类,它捕获完整类型的ResultResponse<NewTypeResponse>,使其在运行时可以访问。

在Gson文档中有关于TypeToken的一些文档:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Generic-Types