反序列化自定义对象时,gson fromjson会抛出NoClassDefFound错误

时间:2015-08-28 17:00:44

标签: android json gson

我正在尝试一些非常简单的事情,它应该起作用:

任何人都可以评论为什么我能够序列化json但不能反序列化它并让我的对象回来。

public class ConfigJsonObj {
public List<ConfigJson_InvitesPending> invites_pending;

public ConfigJsonObj() {
    invites_pending = new ArrayList<ConfigJson_InvitesPending>();
}

public ConfigJsonObj(List<ConfigJson_InvitesPending> invitesPendings) {
    invites_pending = new ArrayList<ConfigJson_InvitesPending>();
    if (invitesPendings!=null) {
        invites_pending.addAll( invitesPendings);
    }
} 
}

public class ConfigJson_InvitesPending {
public String toDisplayName;

public ConfigJson_InvitesPending() {}

public ConfigJson_InvitesPending(String toName) {
    toDisplayName = toName;
}
}

要序列化的代码

String json = gson.toJson(configJsonObjObject);

Json生成

{
 "invites_pending": [
 {
   "toDisplayName": "London"
 }
 ]
}

反序列化代码

ConfigJsonObj obj = gson.fromJson(json, ConfigJsonObj.class);
    return obj;

当我在上面调用gson.fromJson(...)时出现异常:

 java.lang.NoClassDefFoundError
 more.nmspace.dto.ConfigJsonObj

我不知道为什么我没有找到类def def错误!

1 个答案:

答案 0 :(得分:0)

好的,在2个晚上度过这个错误后,现在就开始工作了!

我在另一个ParseObject类中使用了Gson序列化/反序列化代码,它给了我错误。

例如

@ParseClassName("MyParseObject")
public class MyParseObject extends ParseObject {

public void setConfigJsonObj(ConfigJsonObject configJsonObj) {
   String json = (new Gson).toJson(configJsonObj);
   put("config_json",json);
}
public ConfigJsonObject getConfigJsonObject() {
   String config_json = getString("config_json");
   ConfigJsonObject obj = (new Gson).fromJson(config_json,ConfigJsonObject.class);
   return obj;

 }

}

我想封装对象&lt; - &gt; json转换为dto类,但在这种情况下无法完成。

所以现在我已经替换了上面的代码并在MyParseObject类外部进行了序列化/反序列化,我将json直接传递给它,而不是自定义对象。

希望这也有助于其他人。 干杯