Realm任何 KSerializer

对象 RealmAnyKSerializer : KSerializer < RealmAny >

RealmAny 的KSerializer实现。 序列化作为特定的映射结构完成,该结构表示具有所有可能值类型的联合类型:

realmAny:
    type: [INT, BOOL, STRING, BINARY, TIMESTAMP, FLOAT, DOUBLE, DECIMAL128, OBJECT_ID, UUID, OBJECT]
    int: Long?
    bool: Boolean?
    string: String?
    binary: ByteArray?
    instant: RealmInstant?
    float: Float?
    double: Double?
    decimal128: Decimal128?
    objectId: ObjectId?
    uuid: RealmUUID?
    realmObject: RealmObject?

反序列化是使用非托管RealmAny完成的。

必须按属性注册序列化器:

class Example : RealmObject {
    @Serializable(RealmAnyKSerializer::class)
    var myInstant: RealmAny = RealmAny.create("hello world")
}

或按文件:

@file:UseSerializers(RealmAnyKSerializer::class)

class Example : RealmObject {
    var myInstant: RealmAny = RealmAny.create("hello world")
}

包含序列化的 RealmAny 实例的序列 化 需要一个将此类对象映射到多态 RealmObject 接口的 SerializersModule

val json = Json {
    serializersModule = SerializersModule {
        polymorphic(RealmObject::class) {
            subclass(SerializableSample::class)
        }
    }
}

将以下代码片段添加到 Kotlin 文件中,可以方便地将使用 Realm 数据类型的任何字段注册到相应的序列化器:

@file:UseSerializers(
    RealmListKSerializer::class,
    RealmSetKSerializer::class,
    RealmAnyKSerializer::class,
    RealmInstantKSerializer::class,
    MutableRealmIntKSerializer::class,
    RealmUUIDKSerializer::class
)

所有 Realm 数据类型的序列化器都可以在io.realm.kotlin.serializers中找到。

属性

链接已复制到剪贴板
打开 覆盖 val 描述符: SerialDescriptor

功能

链接已复制到剪贴板
打开 覆盖 乐趣 反序列化(解码器解码器): RealmAny
链接已复制到剪贴板
打开 覆盖 乐趣 序列化(coder Encoder value RealmAny)