我喜欢将单值类型用于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())
}
}
基本上,什么写成here,但不起作用:(