kotlin 使用TypeConverter将Map插入房间数据库

s4n0splo  于 2023-03-13  发布在  Kotlin
关注(0)|答案(1)|浏览(173)

我想将TypeConverter添加到我的应用程序中,但我不知道如何将Map添加到我的Converter类中。我已经介绍了我认为应用程序中所有必要的实体。以下是一些代码:

@Entity(tableName = "map_table")
data class dbtable(
    @PrimaryKey
    @ColumnInfo
    @TypeConverters(MyConverter::class)
    val data: Map<String, Float>? = null
)

在数据库类中,我添加了注解

@TypeConverters(MyConverter::class)
abstract class myDb() : RoomDatabase() {
...
}

我的DAO乐趣看起来像这样:

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun test(model: dbtable)

现在,我如何在我的转换器类中实现map呢?我有点迷失在其中了。

ut6juiuv

ut6juiuv1#

class MyConverter {
   
        @TypeConverter
        fun jsonToMap(value: String): Map<String, Float>? {
            val mapType = object : TypeToken<Map<String, Float>?>() {}.type
            return Gson().fromJson(value, mapType)
        }

        @TypeConverter
        fun mapToJson(map: Map<String, Float>?): String {
            val gson = Gson()
            return gson.toJson(map)
        }
    }
}

@Entity(tableName = "map_table")
@TypeConverters(MyConverter::class)
data class dbtable(
    @PrimaryKey
    @ColumnInfo
    val data: Map<String, Float>? = null
)

相关问题