我目前正在开发一个Java Json库。我自己做HTTP请求,让杰克逊做JSON序列化。
在大多数情况下,图书馆工作正常,但在一种情况下,图书馆没有。
我有相当默认的POJO:
public class MyClass extends MyBase {
@JsonProperty("MY_PROP")
private string myProp;
// ... some properties more
@JsonProperty("DATA")
private SubClass data;
// ... getter/setter
}
子类只是一个主要包含Integer字段和两个双字段的类。超类包含来自服务器的一些状态信息。这种方式适用于其他7个响应类。
服务器响应类似于
{
"MY_PROP":12,
/* and so on*/
"DATA":{ /* stuff */ }
}
当我使用一个在HTTP响应到来时触发的小助手类时,我在Android手机上出现以下异常:
org.codehaus.jackson.map.JsonMappingException:找不到类型[simple type,class my.company.at.MyClassBase]的合适构造函数:无法从JSON对象实例化(需要添加/启用类型信息?)< / p>
但只能在我的Android手机上。如果我在我的计算机上运行Junit-Test - 这与完全相同的东西我获得了反序列化的对象。有什么想法吗?
答案 0 :(得分:0)
我不知道根本原因,但如果该类没有默认(no-arg)构造函数,可能尝试添加一个?如果不存在构造函数,Javac应该添加一个,但是我想知道在这种情况下Android的编译器是否会产生不同类的类。