一、遇到坑之前的库版本
kotlin版本: ext.kotlin_version = "1.3.72"
fastJson 版本 :api 'com.alibaba:fastjson:1.2.73'
实体类:
data class HomeBannerBean(
val advertisements: List<Advertisement>? = mutableListOf(),
val maxCarouselNum: Int = -1,
val positionCode: String = "",
val type: Int = -1
)
注意:默认的构造函数,只需要给所有的参数一个 默认值 即可!!
二、错误上报
kotlin Caused by: com.alibaba.fastjson.JSONException: default constructor not found. class
异常
1,解决方案,添加 kotlin-reflect 库
//解决:kt 使用data class 的时候,json转换异常
api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
2,给 data 类的参数,添加默认实现。如上 HomeBannerBean
对其参数,都添加默认实现。
3,混淆添加:
# 按照Gradle Plugin升级说明添的规则
-keep class kotlin.Metadata { *; }
-keepattributes RuntimeVisibleAnnotations
# 因为fastjason需要通过kotlin-reflect完成工作,还需要添加一下规则
-dontwarn kotlin.reflect.jvm.internal.**
-keep class kotlin.reflect.jvm.internal.** { *; }
-keep class com.cheekiat.fastjson.model.** {*;}
-keepattributes Signature
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.*{*;}
ps:个人没把 fastJson,换成Android版本,换之后,项目各种报错。
参考:
网友评论