android - 启用缩小后 JsonProperty 不工作

标签 android jackson proguard kotlin

我有以下类(class)

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

这里缺少什么?

谢谢。

最佳答案

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

-keep class kotlin.Metadata { *; }

关于android - 启用缩小后 JsonProperty 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44098227/

相关文章:

android - 在 Android 中获取图像缩略图

android - 手动启动 Firebase 服务

java - jackson : custom collection serialization to JSON

java - Spring MVC 4.2 Jackson解析异常意外字符('%'(代码37))

android - :[已解决]:将gradle升级到4.0.0后,改造不再收到响应

android - 如何在 Flutter 中将我的 AppBar 放在一个单独的文件中,同时仍然显示小部件?

java - xml dom 解析器然后用 ListView 显示结果

Java Jackson 解析动态 JSON 对象

java - Proguard 与 Maven

java - 带有可序列化对象的 IOException