我在我的Android-App中使用GSON反序列化JSON-Strings。我的问题是,我没有检索预期的对象,但是LinkedTreeMap对象是导致异常的原因:
java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法强制转换为sis.hierrein.android.DDL.Core.Uniqueidentifier
我的课程:
public class Uniqueidentifier {
public String OID;
}
public class Element extends Uniqueidentifier {
(...)
}
实现反序列化的方法:
public void Set(String data) throws Exception {
HashSet<T> objList = loadObject(data);
if(objList == null) {
throw new Exception("Es wurden keine Daten übergeben.");
}
for(T obj: objList) {
// Trying to iterate over each element causes the exception
}
}
// T is in this example Element
protected HashSet<T> loadObject(String data) {
Gson parser = new Gson();
HashSet<T> obj;
Type t = new TypeToken<HashSet<T>>(){}.getType();
try {
obj = parser.fromJson(data, t);
}
catch(Exception e) {
return null;
}
return obj;
}
班级
public class Handler<T extends Uniqueidentifier> {
(...)
}
包含此方法,用作
的超类public class ElementHandler extends Handler<Element> {
(...)
}
ElementHandler本身只包含一个构造函数,因此调用了超类的方法。 背景:所有这些类都是实例化的/方法是通过反射调用的。