美文网首页
Kotlin data类 & fastJson 坑

Kotlin data类 & fastJson 坑

作者: 徘徊0_ | 来源:发表于2021-06-21 11:27 被阅读0次

    一、遇到坑之前的库版本

    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版本,换之后,项目各种报错。

    参考:

    相关文章

      网友评论

          本文标题:Kotlin data类 & fastJson 坑

          本文链接:https://www.haomeiwen.com/subject/lmxyyltx.html