不调用TypeConverter
我打了个电话,打给innerRateToJson,但从来没有打过fromJsonToInnerRates
class Converters {
@TypeConverter
fun innerRateToJson(innerRate : HashMap<String, Double>): String? {
val type = object : TypeToken<HashMap<String, Double>>() {}.type
return Gson().toJson(innerRate, type)
}
@TypeConverter
fun fromJsonToInnerRates(innerRatesString : String): HashMap<String, Double>? {
val type = object : TypeToken<HashMap<String, Double>>() {}.type
return Gson().fromJson<HashMap<String, Double>>(innerRatesString, type)
}
}和我的数据类
data class Rates (
@PrimaryKey(autoGenerate = true)
@SerializedName("id")
val id: Int,
@ColumnInfo(name = "base")
@SerializedName("base")
val base: String,
@ColumnInfo (name = "date")
@SerializedName ("date")
val date: String,
@ColumnInfo (name = "rates")
@SerializedName ("rates")
@TypeConverters(Converters::class)
val rates: HashMap<String, Double> = HashMap()
) : Parcelable不知道该怎么办
发布于 2019-10-03 15:44:22
这是因为你的变量修饰符。
将变量设置为val会使其成为只读的,因此您无法访问它。
只需将其切换到var即可。
@ColumnInfo (name = "rates")
@SerializedName ("rates")
@TypeConverters(Converters::class)
var rates: HashMap<String, Double> = HashMap()您可以查看var和val here之间的区别。
您还应该在AppDatabase类上定义您的转换器。
@Database(entities = arrayOf(Rates::class), version = 1)
@TypeConverters(Converters::class)
abstract class AppDatabse : RoomDatabase()尝试使用@TypeConverter下面的@JvmStatic,如下所示
@TypeConverter
@JvmStatic
fun innerRateToJson(innerRate : HashMap<String, Double>): String? {
val type = object : TypeToken<HashMap<String, Double>>() {}.type
return Gson().toJson(innerRate, type)
}https://stackoverflow.com/questions/58212422
复制相似问题