我正在尝试使用 Gson 解析一个 json 对象,其中包含一个 结果
,该结果可以是我已经能够正常解析的某些给定类。我像这样定义 ResultResponse
类:
public class ResultResponse<T>
{
@SerializedName("result")
public T Response;
}
我想这样读:
ResultResponse<NewTypeResponse> result = new Gson().fromJson(response, ResultResponse.class);
但我相信这不是正确的方法。我也收到此警告:
Unchecked assignment: 'rs.test.ResultResponse' to 'rs.test.ResultResponse
我正在寻找正确的方法来做到这一点。如有任何有用的答案,我们将不胜感激。
最佳答案
如果你有具体的T
(我假设 NewTypeResponse
就是这样一个,而不仅仅是虚拟代码),您可以使用 TypeToken
告诉 Gson 像这样的泛型类型:
ResultResponse<NewTypeResponse> result = new Gson().fromJson(response,
new TypeToken<ResultResponse<NewTypeResponse>>() {}.getType());
这将创建一个新的匿名类,扩展 TypeToken
它捕获 ResultResponse<NewTypeResponse>
的完整类型,使其可以在运行时被 Gson 访问。
Gson 文档中有一些关于 TypeToken 的文档:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Generic-Types
关于java - 使用 Gson 将 jsonObject 读取为 MyClass<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815687/