我正在尝试使用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
我正在寻找正确的方法来做到这一点。任何有用的答案都表示赞赏。
答案 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