【发布时间】:2014-06-18 05:34:08
【问题描述】:
我正在尝试正确使用 GSON library 调用 fromJSON 的方法
public <T> T fromJSON( String object, Class<T> classObject )
{
return gson.fromJson( object, classObject );
}
事实上,我有一些类可以使用 Java 泛型定义一个成员。例如,我可以创建一个new ValidationResult<User>(), ValidationResult<Image>() or ListResult<User>(), ListResult<Image>(),等等......所以我面临的问题是我需要告诉 GSON 它应该使用哪个 T。这是我遇到问题的地方,因为我当前的代码正在将 JSON 对象转换为ValidationResult 或ListResult,但通用对象不被视为User、Image 等。它只是例如转换为LinkedTreeMap。
我尝试了一些在 Stackoverflow 中找到的答案,但我仍然无法正确回答。
Using a generic type with Gson
Google Gson - deserialize list<class> object? (generic type)
Deserializing Generic Types with GSON
有人可以让自己走上正确的道路吗?如果可能的话,分享一些我可以用作指导的代码。
【问题讨论】:
-
声明
fromJson方法的类是否有类型参数T? -
所以这是一个通用方法对吧?你必须在使用前声明类型,试试
public <T> T fromJSON(String object, Class<T> classObject) -
@SotiriosDelimanolis 它没有
因为我不想在每次想将 fromJSON 方法与不同的类一起使用时创建一个新实例。 -
然后按照@neevek 的建议做,使方法通用。
-
感谢 SotiriosDelimanolis 和 @neevek。问题已更新。 GSON 仍然忽略类型。例如,我应该如何传递 ValidationResult
?
标签: java