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

标签 java json gson

我正在尝试使用 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/

相关文章:

java - JDK 6 是否支持 XSLT 2.0?

java - 当我们调用重写方法 add Five() 时,b 被打印为 Bar 对象被创建,但为什么它在 Bop Class.Output 中调用 "a"。输出是 b3

java - ANTLR4 词法分析器监听器

php - jqGrid 在插入和更新后奇怪地重新加载数据

android - 我可以使用带有 SerializedName 的 GSON 访问 JSON 的内层吗

java - 将 AVL 树打印到 JTextPane : Java

java - 使用 Jackson 将 JSON 数据读取到数组/列表中

objective-c - -JSONValue 失败。错误是 : Illegal start of token [']

Android:Json获取内部对象

java - 如何使用 GSON 解析漂亮的 JSON