【发布时间】:2020-01-10 21:42:46
【问题描述】:
我的 JSON 看起来像这样(看看额外的对象数组):
objects:[
{
name,
date,
string,
string,
bonus:[
{
bonus_name
bonus_amount
bonus_imgurl
},{
bonus_name
bonus_amount
bonus_imgurl
},{
bonus_name
bonus_amount
bonus_imgurl
}
]
},
string,
string,
bonus:[
{
bonus_name
bonus_amount
bonus_imgurl
},{
bonus_name
bonus_amount
bonus_imgurl
},{
bonus_name
bonus_amount
bonus_imgurl
}
]
}
]
我已经成功地将对象数组解析到数据库中,每个数组都有自己的行。我现在想用 TypeConverter 为每一行添加奖励
@Entity(tableName = config.TABLE_EVENTS)
data class RoomEventsModel(
@ColumnInfo(name = "name")
var eventName: String?,
....
@TypeConverters(value = [Converters::class])
@ColumnInfo(name = "bonus_values") var bonus_value: List<Bonus>
){
@PrimaryKey(autoGenerate = true)
var id: Int? = null
}
Converters.class 看起来像:
class Converters : Serializable {
companion object {
@TypeConverter
fun fromBonusList(bonusElements : List<Bonus>): String {
val gson = Gson()
val type = object : TypeToken<List<Bonus>>() {
}.type
return gson.toJson(bonusElements, type)
}
@TypeConverter
fun toBonusList(bonusElements: String?): ArrayList<HashMap<List<Bonus>, RoomEventsModel>>? {
if (bonusElements == null) {
return null
}
val gson = Gson()
val type = object : TypeToken<List<Bonus>>() {
}.type
return gson.fromJson<ArrayList<HashMap<List<Bonus>,RoomEventsModel>>>(bonusElements, type)
}
}
我将 TypeConverter 添加到我的 AppDatabase 类中
@TypeConverters(value = [Converters::class])
abstract class AppDatabase : RoomDatabase() {
...
}
编译它说我:
类被引用为转换器,但它没有任何转换器 方法。
代码有什么问题?
【问题讨论】:
-
您的
toOptionValuesList(...)方法是否旨在作为方法fromBonusList(...)的补充?还是它们完全不相关? -
@Christilyn:现在应该以正确的方式编写 :)
标签: android kotlin android-sqlite typeconverter