Android 在房间数据库中存储地图

Android 在房间数据库中存储地图,android,kotlin,android-room,typeconverter,Android,Kotlin,Android Room,Typeconverter,我正在尝试将地图存储在我的房间数据库中。 所以我创建了一个转换器类,如下所示: class HashMapConverter { @TypeConverter fun toHashMap(value: JsonElement): Map<String, String> = Gson().fromJson(value, object : TypeToken<Map<String, String>>() {}.type)

我正在尝试将
地图
存储在我的房间数据库中。
所以我创建了一个转换器类,如下所示:

class HashMapConverter {

    @TypeConverter
    fun toHashMap(value: JsonElement): Map<String, String> =
        Gson().fromJson(value, object : TypeToken<Map<String, String>>() {}.type)

    @TypeConverter
    fun fromHashMap(value: Map<String, String>): String =
        Gson().toJson(value)


}
@Database(
    entities = [TasksModel::class],
    version = 1, exportSchema = false
)
@TypeConverters( HashMapConverter::class,EnumConverters::class)
abstract class TasksDatabase : RoomDatabase() {
    abstract val tasksDAO: TasksDAO
}
这是我的任务模型:

@Entity(tableName = "Tasks")
data class TasksModel(
    @PrimaryKey
    @ColumnInfo
    val id: Int,

    @ColumnInfo
    val taskName: String,

    @ColumnInfo
    val date: Map<String, String>,

    @ColumnInfo
    val time: String?,

    @ColumnInfo
    val status: TaskStatus
)
@实体(tableName=“Tasks”)
数据类任务模型(
@主键
@专栏信息
val id:Int,
@专栏信息
val taskName:String,
@专栏信息
val日期:地图,
@专栏信息
val时间:字符串?,
@专栏信息
val状态:任务状态
)
我还有一个枚举转换器类,它工作得很好。 但当我将HashMap添加到数据库时,我得到以下错误:

Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private final java.util.Map<java.lang.String, java.lang.String> date = null;
无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。
private final java.util.Map date=null;

这有什么问题吗?

我认为你的问题有点像是在转移视线。因为问题不在于如何保存字段,而在于如何提取字段

您将在数据库中存储一个字符串(根据fromHashMap类型转换器),投诉/问题是您试图在toHashMap函数中将其提取为JsonElement

尝试使用:-

@TypeConverter
fun toHashMap(value: String): Map<String, String> = 
    Gson().fromJson(value, object : TypeToken<Map<String, String>>() {}.type)
@TypeConverter
fun-toHashMap(值:字符串):Map=
Gson().fromJson(值,对象:TypeToken(){}.type)

谢谢你,伙计。问题正是你说的。