Kotlin的Gson反序列化默认值失效(修改实体类bean中字段值的方法)

我们在开发过程中经常会遇到需要保存列表中每个条目的选中状态的需求(例如购物车多选),用户修改完数据后判断每个条目是否选中把用户修改的数据传给后台,这时我们直接修改实体类bean中的数据就会方便很多。

java中使用set,get就可以实现,而在Kotlin中修改实体类bean中对应的字段值时确遇到了坑。

首先,我们需要给是否选中状态设置一个默认状态,我们默认每个条目状态为未选中

data class DataListBean(
    @SerializedName("RSPDATA")
    var rSPDATA: RSPDATA,
) {
    data class RSPDATA(
        @SerializedName("LIST")
        var lIST: List<LIST>
    ) {
        data class LIST(
            @SerializedName("NAME")
            var nAME: String, //名字
            var isLock:String = "00" //00未选中、01选中
        )
    }
}

然而代码运行后发现默认值无效,废了老大劲,调了半天,结合网上大神们的解释发现要想默认值生效,实体类LIST集合里的每一个字段都要有默认值,才会走默认的构造方法。否则有一个没有设置默认值,其它字段设置的默认值都不会生效。正确实体类添加默认值代码如下:

data class DataListBean(
    @SerializedName("RSPDATA")
    var rSPDATA: RSPDATA,
) {
    data class RSPDATA(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值