Jackson Mapper在Android上抛出异常,但在JavaSE中没有

Jackson Mapper在Android上抛出异常,但在JavaSE中没有,android,jackson,Android,Jackson,我目前正在开发一个JavaJSON库。我自己做HTTP请求,让Jackson做JSON序列化 该库在大多数情况下都可以正常工作,但有一种情况下不行 我有相当多的默认POJO: public class MyClass extends MyBase { @JsonProperty("MY_PROP") private string myProp; // ... some properties more

我目前正在开发一个JavaJSON库。我自己做HTTP请求,让Jackson做JSON序列化

该库在大多数情况下都可以正常工作,但有一种情况下不行

我有相当多的默认POJO:

      public class MyClass extends MyBase {
           @JsonProperty("MY_PROP")
           private string myProp;

           // ... some properties more

           @JsonProperty("DATA")
           private SubClass data;

           // ... getter/setter
      }
子类只是一个类,主要包含整数字段和两个双字段。超类包含来自服务器的一些状态信息。这种方法适用于其他7个响应类

服务器响应如下所示

      {
         "MY_PROP":12,
         /* and so on*/
         "DATA":{ /* stuff */ }
      }
当我使用HTTP响应到达时触发的小助手类时,我在android手机上遇到以下异常:

org.codehaus.jackson.map.JsonMappingException:找不到适合类型[simple type,class my.company.at.MyClassBase]的构造函数:无法从JSON对象实例化(需要添加/启用类型信息?)


但只在我的安卓手机上。如果我在我的计算机上运行Junit测试——这与我得到反序列化对象的操作完全相同。有什么想法吗?

我不知道根本原因,但是如果该类没有默认(无参数)构造函数,也许可以尝试添加一个?如果不存在构造函数,Javac应该添加一个,但我想知道在这种情况下,Android的编译器是否会生成不同类型的类。

没有帮助。添加此构造函数后,它抛出了一些奇怪的异常,关于没有一个名为MY_PROP的无法识别的属性。该错误将表明(顾名思义)您尝试绑定到的类没有定义属性“MY_PROP”。快速提问:您是想绑定到MyClass.class(它有)还是MyBase.class(可能没有)?如果是后者,则异常是有意义的。不,我将它绑定到MyClass。我已经开始重新设计当前的应用程序,使其使用GSON而不是Jackson。目前,GSON的速度比Jackson快100%,所以我想我会把精力花在调整GSON上,而不是研究奇怪的Dalvik/SUN JVM差异。不过还是要谢谢你的指点。祝你好运!当你遇到问题时,杰克逊仍然会在那里。:-)