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 インスタンスの直列化では、 SerializersModule がこのようなオブジェクトを多形 RealmObject インターフェースにマッピングする必要があります。
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にあります。