我喜欢对例如 ID 使用单值类型。我如何告诉 Kotlinx 序列化器考虑常规字段而不是对象等类型?
例子:
data class User(
val id: UserId,
val name: String,
)
应序列化为:
{
id: 123,
name: "foo"
}
和 UserId 只是data class(val value: Int)
?
编辑:我想我可以为每个Id
类使用自定义序列化程序,但我真的不想为我的域中的每个 ID 重复这样的代码。此外,我不知道如何写一个;到目前为止,我的努力失败了。
EDIT2:这是我编写此类序列化程序的尝试:
open class DoctorIdSerializer : KSerializer<DoctorId> {
override val descriptor: SerialDescriptor = PrimitiveDescriptor("id", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: DoctorId) {
encoder.encodeInt(value.value)
}
override fun deserialize(decoder: Decoder): DoctorId {
return DoctorId(decoder.decodeInt())
}
}
基本上,这里写的是什么,但它不起作用:(