使用 Gson 将 jsonObject 读取为 MyClass<T>

Reading jsonObject as MyClass<T> using Gson

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

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());

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

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