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 传递给它,而不是自定义对象。
希望这对其他人也有帮助。
干杯
我正在尝试一些非常简单的事情,它应该可以正常工作:
任何人都可以评论为什么我能够序列化 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 传递给它,而不是自定义对象。
希望这对其他人也有帮助。 干杯