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")
}

RealmObject 를 포함하는 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 에서 찾을 수 있습니다.

속성

클립보드에 링크 복사됨
열기 [readConcern] 재정의 val 디스크립터: SerialDescriptor

함수

클립보드에 링크 복사됨
열기 [readConcern] 재정의 fun 역직렬화(Decoder: Decoder): RealmAny
클립보드에 링크 복사됨
열기 [readConcern] 재정의 fun 직렬화(Encoder: Encoder, : RealmAny)