用kotlin写Gson解析遇到failed to invoke 问题

       这段时间一直用kotlin再写项目,对于语法不是很熟悉总是遇到一些问题不知如何解决,网上的资料也不多,只能摸索着解决。本篇文章只为记录错误防止以后再犯。

问题描述:

自定义一个类LifecycleJson

class LifecycleJson() {
    var lifecycle: ArrayList = null!!

    var link: ArrayList = null !!

    var state: ArrayList = null!!

  
}
在项目中有一段Gson解析的代码

fun parseData(result: String): LifecycleJson {
        val gson = Gson()
        val lifecycleJsonInfo = gson.fromJson(result, LifecycleJson::class.java)
        return lifecycleJsonInfo
    }
每次运行到Gson解析的时候都会遇到Failed to invoke 包名.LifecycleJson with no args

错误信息很简单就是Gson在把json映射成LifecycleJson对象时不能调用没有参数的构造。

思考:

       在java语言中每个对象都会默认生成一个没有参数的构造器,为什么会不能调用呢?第一直觉就是自己写了一个没有参数的构造函数,然而仍旧报相同的错误。

问题搁置了几天,有一天我单步调试发现返回的字符串某些属性是为空的,在kotlin中定义属性的时候都要明确是否可以为空,比如LifecycleJson中的3个属性我写的都不能为空。因此对LifecycleJson进行修改如下:

class LifecycleJson() {
    var lifecycle: ArrayList ?= null

    var link: ArrayList ?= null

    var state: ArrayList ?= null


}
再运行,没有报错,结果正确解析。




你可能感兴趣的:(异常处理)