GSON-Deserialization不映射正确的类

时间:2013-07-26 09:22:39

标签: java android json deserialization gson

我在我的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本身只包含一个构造函数,因此调用了超类的方法。 背景:所有这些类都是实例化的/方法是通过反射调用的。

0 个答案:

没有答案