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

ath*_*hor 1 proguard jackson kotlin

我正在使用Jackson对Kotlin数据类进行反序列化.我正在使用jackson-kotlin-module但杰克逊给了我以下错误:

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

我已经尝试添加proguard规则来保存我的类,它的构造函数没有任何成功.

如果我添加一个规则来保留所有kotlin类,那么错误就会消失.

有任何想法吗?

ath*_*hor 5

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

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

-keep class kotlin.Metadata { *; }
Run Code Online (Sandbox Code Playgroud)

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

-keepclassmembers public class com.mypackage.** {
    public synthetic <methods>;
}
Run Code Online (Sandbox Code Playgroud)

  • 您使用哪种构建工具(gradle/maven)?您在哪里添加这些规则? (2认同)