Realm 모든 KSerializer
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 에서 찾을 수 있습니다.