当前位置: 首页 > 知识库问答 >
问题:

如何在ROOM库中使用类型转换器来处理复杂的数据类型?

东方嘉木
2023-03-14

我是第一次来图书馆。我有一些复杂的json数据结构,我想存储在ROOM数据库中,我不知道如何使用多个对象列表的类型转换。以下是我的实体,

 // 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>
)

//还具有映射对象数据类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
)

共有1个答案

尹俊雅
2023-03-14

下面是一个如何将TypeAdapter用于其中一个Map对象的示例。其他的你也可以照做。

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)
    }
}
 类似资料:
  • 我将Camel与Spring Boot一起使用。在基本上记录消息正文的服务路由实现过程中,我看到了如下所示的错误。 我的路线是: 我在日志正文行中出现错误。 我的问题是预期的行为?为什么Camel不只是调用对象的方法。如果这是预期的行为,那么我需要一个字符串转换器来处理每个新的复杂类型?

  • 概述 JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。 var x = y ? 1 : 'a'; 上面代码中,变量x到底是数值还是字符串,取决于另一个变量y的值。y为true时,x是一个数值;y为false时,x是一个字符串。这意味着,x的类型没法在编译阶段就知道,必须等到运行时才能知道。 虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的。如果运算

  • JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予任意值。但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型。大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换。 强制转换 Number函数:强制转换成数值 String函数:强制转换成字符串 Boolean函数:强制转换成布尔值 自动转换 自动转换为布尔值 自动转换为字符串 自动转换为数值 小结 加

  • 我们有一个DynamoDb表,其中一个列名“createdAt”有时创建为S(String)数据类型,有时创建为N(Number)数据类型。 在我的代码中,如果我定义为String,当我想获取数据时它会失败,它是数字: 如果我定义为Number,当我想获取数据并且它是表中的字符串时失败: 你们有没有人以前也有过同样的问题?应该有办法解决它对吗?并且不能只选择一种数据类型:(

  • pg 相对于其它关系型数据库的一大优势就在于成熟的复杂类型支持,包括数组、JSON 对象、HStore 等等。 Array pg 的数组功能非常强大,支持类型数组、多维数组、定长数组。 定义一个简单的数组列: CREATE TABLE sample_table ( array_example integer[], ); 对应插入语句: INSERT INTO sample_table

  • BidsItem类 如果有人告诉我我需要做什么,或者至少向什么方向前进,我将非常感激