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

gson fromjson throws NoClassDefFound error when deserializing custom object

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

任何人都可以评论为什么我能够序列化 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

我不知道为什么没有 class def found 错误!

好的,在为这个错误度过了 2 个晚上后,现在可以使用了!

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

例如

@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;

 }

}

我想封装对象<-> json转换成dto class,但在这种情况下无法完成。

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

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