问题描述
向数据类添加了新字段并升级了应用程序。 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 (将#修改为@)