杰克逊未能对Kotlin数据类进行反序列化

时间:2017-06-08 05:21:49

标签: jackson kotlin proguard

我使用Jackson来反序化Kotlin数据类。我正在使用jackson-kotlin-module,但杰克逊给了我以下错误:

  

无法构造MyClass的实例:找不到合适的构造函数,无法从Object值反序列化

我尝试添加proguard规则来保存我的课程,而且它的构造函数没有任何成功。

如果我添加规则以保留所有kotlin类,则错误消失。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

经过大量的反复试验后,我发现Proguard正在从我的数据类中删除kotlin.Metadata注释。

添加以下规则可解决此问题:

-keep class kotlin.Metadata { *; }

我还发现还需要添加一条规则来保持我的数据类的合成方法:

-keepclassmembers public class com.mypackage.** {
    public synthetic <methods>;
}