添加新字段后,JSON的Room TypeConverter来自空值

问题描述

向数据类添加了新字段并升级了应用程序。 fromJSON无法解析该字符串并返回null。

App v1

@Mockable
@Entity
data class NotificationCardModel(
@PrimaryKey
var id: String,...
var actions: List<ActionsModel>,) 

@Mockable
data class ActionsModel(
var id: String,var user_input: List<UserInputJSON>,..
)

App v2

@Mockable
@Entity
data class NotificationCardModel(
@PrimaryKey
var id: String,var request: RequestModel? = null,..
)

data class RequestModel(
var conId: String,)

这是我正在使用的类型转换器,

    @TypeConverter
    @JvmStatic
    fun fromActionsModelList(value: List<ActionsModel>): String {
        val gson = Gson()
        val type = object : TypeToken<List<ActionsModel>>() {}.type
        return gson.toJson(value,type)
    }

    @TypeConverter
    @JvmStatic
    fun toActionModelList(value: String): List<ActionsModel> {
        val gson = Gson()
        val type = object : TypeToken<List<ActionsModel>>() {}.type
        return gson.fromJson(value,type)
    }

安装该应用程序,Room将V1作为数据库存储一个通知。 升级应用程序,启动它,并在使用List<ActionsModel>获取gson.fromJson的同时,将所有字段均设为null的ActionsModel重新调整。 这就是toActionModel方法收到的输入

[{"a":"91e16bf0-2dc8-46f8-9d2b-0ce62010db86","b":[],"c":"GET","d":"https://google.com","e":true,"f":"","g":"Okay","h":"OPEN_IN","i":"Okay","j":false,"k":false}]

这是我解析后得到的

ActionsModel(id=null,user_input=null,type=null,url=null,primary=false...)

我想念什么?向转换类中添加新字段是否有影响?我添加了一个超级简单的测试来验证它,但是效果很好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)