我有以下代码片段:
public class MyClass{
private Object returnValue;
//getters setters
}
Gson gson=...;
MyClass cl=new MyClass();
cl.setResultValue(***new OtherClass()***);
gson.toJson(cl,MyClass.class);
当我尝试反序列化时,我需要在returnValue字段中观察OtherClass实例,但在那里得到LinkedHashMap。我了解这很可能是由于Object字段类型引起的,但是如何强制它获取对象的实际类型,而不仅仅是Object?
最佳答案
您可以使用泛型来实现。
首先,让您将类通用化,如下所示:
public class MyClass<T>{
private T returnValue;
public T getReturnValue(){
return returnValue;
}
public void setReturnValue(T returnValue){
this.returnValue = returnValue;
}
}
之后,您可以使用Type反序列化json:
public static void main(String[] args){
Gson gson = new Gson();
MyClass<OtherClass> myClass = new MyClass<>();
myClass.setReturnValue(new OtherClass());
//serialization
String json = gson.toJson(myClass);
Type type = new TypeToken<MyClass<OtherClass>>
MyClass<OtherClass> deserializedClass = gson.fromJson(json, type);
}