启用缩小功能时JsonProperty无法正常工作

时间:2017-05-21 14:49:55

标签: android jackson proguard kotlin

我有以下课程

class CodeRequest(@JsonProperty("phone") val phoneNumber: String)

当我发送请求(使用改装)与此类的对象作为正文(虽然未启用缩小)时,一切正常并且请求将以此形式发送{"phone": "123"}

但是使用以下proguard-rules.pro启用缩小功能将会产生{"phoneNumber": "123"}请求正文。

# Jackson
-keep class com.fasterxml.jackson.databind.ObjectMapper {
    public <methods>;
    protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
    public ** writeValueAsString(**);
}
-keep @com.fasterxml.jackson.annotation.* class * { *; }
-keep @com.fasterxml.jackson.annotation.** class * { *; }
-keep class com.fasterxml.** { *; }
-keepattributes *Annotation*,EnclosingMethod,Signature,Exceptions,InnerClasses
-keep class * {
    @com.fasterxml.jackson.annotation.* *;
}
-keep class * { @com.fasterxml.jackson.annotation.JsonProperty *;}

# Application classes that will be serialized/deserialized over Jackson
-keepclassmembers class my.application.data.models.** { *; }
-keepclassmembers class my.application.domain.network.rest.** { *; }

这里缺少什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

在发布问题后几分钟找到解决方案。 问题不在proguardjackson,Kotlin会删除存储在kotlin.Metadata中的所需数据。 将以下规则添加到proguard修复了该问题:

-keep class kotlin.Metadata { *; }