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