android 如何使用ROOM库中的复杂数据类型的类型转换器?

qpgpyjmq  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(167)

我是Room库的新手。我有一些复杂的JSON数据结构,我想存储在Room数据库中,我不知道如何使用TypeConverters多个对象列表。
我的实体类如下:

// Trying to put all my custom models in a single table
    @Entity(tableName = "myTable")
    data class RaceModelDatabase(
        @PrimaryKey
        val ID: String,
        @Embedded
        val info: CustomModel,
        @Embedded(prefix = "parti")
        val parti: Map<String, UserModelDatabase>,
        @Embedded
        val totalTime: Map<String, TimeDataModel>
    )
    
    // Custom Models which also has Map objects     
    data class CustomModel(
        val name: String,
        val crdate: String
    )
    
    data class UserModelDatabase(
        @Embedded
        val info: CustomModel,
        @Embedded(prefix = "Result_")
        val result: Map<String, CustomModel>
    )
    
    data class TimeDataModel(
        val Start: Long,
        val End: Long
    )

字符串

djmepvbi

djmepvbi1#

下面是一个如何为Map对象使用TypeAdapter的例子。你可以对其他对象使用同样的方法。

class RaceTypeConverter {
    @JvmStatic
    @TypeConverter
    fun fromString(value: String): Map<String, TimeDataModel > {
       val mapType = object : TypeToken<Map<String, TimeDataModel >>() {}.type
       return Gson().fromJson(value, mapType)
    }

    @TypeConverter 
    @JvmStatic
    fun fromStringMap(map: Map<String, TimeDataModel>): String {
       val gson = Gson()
       return gson.toJson(map)
    }
}

字符串

相关问题