【发布时间】:2019-09-07 07:17:45
【问题描述】:
我正在使用Android Room 开发数据库,我想将JSON 的数据存储到数据库中,如下所示。
@Entity(tableName = "bank_info")
data class BankInfo(
@PrimaryKey
@SerializedName("id")
@ColumnInfo(name = "id") val id: Long,
@SerializedName("name")
@ColumnInfo(name = "name") val name: String,
@TypeConverters(BankTypeConverter::class)
@SerializedName("banks")
@ColumnInfo(name = "banks") val banks: List<Bank>,
){
data class Bank (
@SerializedName("bankid")
@ColumnInfo(name = "id") val id: Long,
@SerializedName("name")
@ColumnInfo(name = "name") val name: String
)
}
并显示错误:
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
private final java.util.List<com.bank.wallet.BankInfo.Bank> banks = null;
^
我已搜索上述错误,并使用@TypeCovert,如下所示:
class BankTypeConverter {
@TypeConverter
open fun lisiToString(list: List<Bank>): String {
if (list == null || list.size === 0) {
return ""
}
val gson = Gson()
val type = object : TypeToken<List<Bank>>() {
}.type
val json = gson.toJson(list, type)
return json
}
@TypeConverter
open fun StringToArray(value: String): List<Bank> {
val gson = Gson()
val type = object : TypeToken<List<Bank>>() {
}.type
return gson.fromJson(value, type)
}
}
但它不起作用,我错过了什么吗?
上述格式的@TypeCovert怎么写?
提前致谢。
【问题讨论】:
标签: android android-room typeconverter