Gson抛出JSON错误“;java.lang.IllegalStateException“;

Gson抛出JSON错误“;java.lang.IllegalStateException“;,java,android,gson,parcelable,illegalstateexception,Java,Android,Gson,Parcelable,Illegalstateexception,我有这个模型:Map其中MyObjectA是一个复杂的对象,但MyObjectB不是。两者都是可包裹的 下面是一个例子: { "my.package.models.MyObjectA@5415636": [{ "member1": "val", "member2": "val", "member2": "val", ... }] } 此操作的工作原理是: private boolean putObject(Stri

我有这个模型:
Map
其中
MyObjectA
是一个复杂的对象,但
MyObjectB
不是。两者都是可包裹的

下面是一个例子:

{
    "my.package.models.MyObjectA@5415636": [{
        "member1": "val",
        "member2": "val",
        "member2": "val",
        ...
    }]
}
此操作的工作原理是:

private boolean putObject(String key, Object object) {
    ...
    return mPreferences.edit().putString(key, mGson.toJson(object)).commit();
}
但这并不是:

type = new TypeToken<Map<MyObjectA, Set<MyObjectB>>>() {}.getType());
private <T> T getObject(String key, Type t) {
    ...
    return mGson.fromJson(mPreferences.getString(key, null), type);
}
typeToken
typeAdapter
正确,但
typeAdapter.read(读卡器)将失败…
typeToken=java.util.LinkedHashMap

typeAdapter类com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter

我错过了什么?
谢谢

编辑:

public class MyObjectA {
    private List<MyObjectB> list;
    private String a;
    private String b;
    private String c;
    private int one;
    private int two;
...
}

public class MyObjectB {
    private String x;
    private String y;
    private String z;
...
}
公共类MyObjectA{
私人名单;
私人字符串a;
私有字符串b;
私有字符串c;
私人int one;
二等兵;
...
}
公共类MyObject B{
私有字符串x;
私有字符串y;
私有字符串z;
...
}

什么是MyObjectA和MyObjectB?很难说您希望解析的结果是什么。那么,对于您的示例JSON,您希望解析的结果是什么样的?在那个例子中,你的键看起来像是某个对象的toString()呈现,解析时可能没有用。该死的,我想我知道它是什么,我不能把一个复杂的对象作为键,对吗?很久以前我就遇到过这个问题:我现在想起来了:/对,最好是用字符串作为键,所以HashMap应该可以工作。什么是MyObjectA和MyObjectB?很难说您希望解析的结果是什么。那么,对于您的示例JSON,您希望解析的结果是什么样的?在那个例子中,你的键看起来像是某个对象的toString()呈现,解析时可能没有用。该死的,我想我知道它是什么,我不能把一个复杂的对象作为键,对吗?很久以前我就遇到过这个问题:我现在记起来了:/Right,最好是使用字符串作为键,所以HashMap应该可以正常工作。
public class MyObjectA {
    private List<MyObjectB> list;
    private String a;
    private String b;
    private String c;
    private int one;
    private int two;
...
}

public class MyObjectB {
    private String x;
    private String y;
    private String z;
...
}