类型序列化
本页介绍 Kotlin 特定类型的序列化。
设置
所有示例都假定以下设置:
import org.apache.fory.Fory
import org.apache.fory.serializer.kotlin.KotlinSerializers
val fory = Fory.builder()
.requireClassRegistration(false)
.build()
KotlinSerializers.registerSerializers(fory)
数据类
data class Person(val name: String, val age: Int, val id: Long)
fory.register(Person::class.java)
val p = Person("John", 30, 1L)
println(fory.deserialize(fory.serialize(p)))
无符号原始类型
完全支持 Kotlin 无符号类型:
val uByte: UByte = 255u
val uShort: UShort = 65535u
val uInt: UInt = 4294967295u
val uLong: ULong = 18446744073709551615u
println(fory.deserialize(fory.serialize(uByte)))
println(fory.deserialize(fory.serialize(uShort)))
println(fory.deserialize(fory.serialize(uInt)))
println(fory.deserialize(fory.serialize(uLong)))
无符号数组
val uByteArray = ubyteArrayOf(1u, 2u, 255u)
val uShortArray = ushortArrayOf(1u, 2u, 65535u)
val uIntArray = uintArrayOf(1u, 2u, 4294967295u)
val uLongArray = ulongArrayOf(1u, 2u, 18446744073709551615u)
println(fory.deserialize(fory.serialize(uByteArray)).contentToString())
println(fory.deserialize(fory.serialize(uShortArray)).contentToString())
println(fory.deserialize(fory.serialize(uIntArray)).contentToString())
println(fory.deserialize(fory.serialize(uLongArray)).contentToString())
标准库类型
Pair 和 Triple
val pair = Pair("key", 42)
val triple = Triple("a", "b", "c")
println(fory.deserialize(fory.serialize(pair)))
println(fory.deserialize(fory.serialize(triple)))
Result
val success: Result<Int> = Result.success(42)
val failure: Result<Int> = Result.failure(Exception("error"))
println(fory.deserialize(fory.serialize(success)))
println(fory.deserialize(fory.serialize(failure)))