Kotlinx序列化器和单值域类型

时间:2020-04-26 10:35:55

标签: kotlin kotlinx.serialization

我喜欢将单值类型用于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,但不起作用:(

0 个答案:

没有答案