【问题标题】:JsonProperty not working while minification enabled启用缩小时 JsonProperty 不起作用
【发布时间】:2017-10-21 05:56:06
【问题描述】:

我有以下课程

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.** { *; }

这里缺少什么?

谢谢。

【问题讨论】:

    标签: android jackson proguard kotlin


    【解决方案1】:

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

    -keep class kotlin.Metadata { *; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2021-04-17
      • 2015-10-26
      • 1970-01-01
      • 2017-03-26
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多