kotlinx序列化-如何序列化接口上的ONLY属性



这里的文档显示,在序列化实现接口的对象时,只要子类是@Serializable,它就可以序列化它。但是,这会序列化子类上的一些我不想序列化的属性。

示例:

interface Test {
val prop1 : String
val prop2 : String
}
@Serializable
class TestImpl(
override var prop1,
override var prop2, 
) : Request {
var dontWantSerialized = 0
}

当我将其序列化时;dontWantSerialized";最后也出现在json中。我想创建一个json负载,只使用接口中的属性。这可能吗?我也不希望它要求";类型";属性,因为我只期望在编译单元中实现一个接口。有什么方法可以通过kotlinx序列化来实现这一点吗?

我想创建一个json负载,它只包含接口

@kotlinx.serialization.Transient添加到任何不希望序列化的属性

我也不希望它需要;类型";属性以及

在定义序列化程序模块时,添加一个default序列化程序:

Json {
this.serializersModule = SerializersModule {
polymorphic(Test::class) {
subclass(TestImpl::class, TestImpl.serializer())
this.default { TestImpl.serializer() }
}
}
}

最新更新