【发布时间】:2018-07-29 21:27:49
【问题描述】:
启用 proguard 规则后,我遇到了以下问题 所以在向网络发送任何内容之前都会出现错误。
java.lang.RuntimeException: 无法转换 FormDocTankPermission 到 RequestBody
引起
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 否 为 FormDocTankPermission 类找到序列化程序,但没有属性 发现要创建 BeanSerializer(为避免异常,禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)
我以@Retrofit.Body 发送的课程如下所示:
class FormDocTankPermission (
@get:JsonProperty("fuelCardId")
val fuelCardId: Long,
@get:JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@get:JsonProperty("validityDate")
val validityDate: Date
)
我认为@get:JsonProperty 会导致 ISSUE
我喜欢这样改造
Builder()
.[...]
.addConverterFactory(JacksonConverterFactory.create())
杰克逊的 Proguard 规则
# Jackson
-keep class com.fasterxml.jackson.databind.ObjectMapper {
public <methods>;
protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
public ** writeValueAsString(**);
}
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
【问题讨论】:
标签: android jackson android-proguard fasterxml