0

我喜欢对例如 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())
    }
}

基本上,这里写的是什么,但它不起作用:(

4

0 回答 0