My 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 в свой класс базы данных приложений
@TypeConverters(value = [Converters::class])
abstract class AppDatabase : RoomDatabase() {
...
}
Компиляция говорит мне:
Класс упоминается как преобразователь, но у него нет методов преобразования.
Что не так с кодом?