[英]Deserializing to a templated class with Gson
我有一個帶有嵌套子類的類
public class OuterClass {
class GenericClassHolder<R> {
@SerializedName("results")
List<R> results;
public GenericClassHolder() {}
public List<R> getResults() {
return results;
}
}
class ExampleClassA {
@SerializedName("A")
int a;
public ExampleClassA() {}
public int getA() {return a;}
}
class ExampleClassB {
@SerializedName("B")
String b;
public ExampleClassA() {}
public String getB() {return b;}
}
}
目前,我希望能夠擁有一個函數,該函數將所保存的類作為參數,並返回適當的GenericClassHolder實例,即類似於我當前的代碼:
GenericClassHolder<ExampleClassA> genericA = parseJson(jsonString, ExampleClassA.class);
與
<T> GenericClassHolder<T> parseJson(final String jsonString, Class<T> variableClass) throws JsonSyntaxException {
return GSON.fromJson(jsonString, new TypeToken<GenericClassHolder<T>>(){}.getType());
}
但這在我當前的實現中不起作用,出現錯誤
無法為
GenericClassHolder<T>
調用no-args構造函數。 使用此類型向Gson注冊InstanceCreator可能會解決此問題。
我如何簡潔地實現我的上述目標,即擁有一個功能,該功能將可能更改的類的規范作為輸入並相應地解析到該對象? 如果無法通過一種功能來實現優雅的解決方案,那么如果沒有一個功能,我怎么能實現這一目標呢?
我在Google Appengine實例中部署了此代碼,由於安全原因,我無法反序列化反序列化的方式,並且無法在本地計算機上以相同的方式進行復制。 解決的辦法是使反序列化的類成為靜態的。 它們也嵌套在外部封裝類中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.