Browse Source

@task: JsonConverter

bai 3 years ago
parent
commit
3f44b94e79

+ 2 - 0
demo/.gitignore

@@ -0,0 +1,2 @@
+/schemas
+/build

+ 22 - 0
demo/src/main/java/com/framework/mvvm/model/db/converter/JsonConverter.kt

@@ -0,0 +1,22 @@
+package com.framework.mvvm.model.db.converter
+
+import androidx.room.TypeConverter
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.json.Json
+import kotlinx.serialization.json.JsonObject
+
+/**
+ * JsonObject 与 String 转换器
+ */
+class JsonConverter {
+    @TypeConverter
+    fun jsonToString(json: JsonObject?): String? {
+        return json?.toString()
+    }
+
+    @TypeConverter
+    fun stringToJson(string: String?): JsonObject? {
+        if (string == null) return null
+        return Json.decodeFromString<JsonObject>(string)
+    }
+}

+ 6 - 3
demo/src/main/java/com/framework/mvvm/model/db/entity/ObjectEntity.kt

@@ -4,14 +4,18 @@ import androidx.annotation.NonNull
 import androidx.room.ColumnInfo
 import androidx.room.Entity
 import androidx.room.PrimaryKey
+import androidx.room.TypeConverters
+import com.framework.mvvm.model.db.converter.JsonConverter
 import kotlinx.serialization.Serializable
+import kotlinx.serialization.json.JsonObject
 
 /**
  * 对象表
  * 建筑,楼层,空间, 设备
  */
-@Entity(tableName = "object")
 @Serializable
+@Entity(tableName = "object")
+@TypeConverters(JsonConverter::class)
 data class ObjectEntity(
     @NonNull
     @PrimaryKey val id: String,
@@ -38,10 +42,9 @@ data class ObjectEntity(
     @ColumnInfo(name = "delivery_state") val deliveryState: Int,   // BDTP交付状态: 1 已交付, 0 待交付
     @ColumnInfo(name = "d2m_state") val d2mState: Int,             // 逆向数据的数模同步状态(0:未同步;1:已同步)
     @ColumnInfo(name = "virtual_codes") val virtualCodes: String,   // 虚点清单: Json 数据格式
-    @ColumnInfo(name = "infos") val infos: String                 // 信息点数据: Json 数据格式
+    @ColumnInfo(name = "infos") val infos: JsonObject?                   // 信息点数据: Json 数据格式
     // @ColumnInfo(name = "parent_id") val parentId: String,          // 上级对象id,为数据操作提供便利(设备:楼层;空间:楼层;楼层:建筑;竖井:建筑;)
 )
-
 /*
 data class Infos(
     val bimId: String,