如何禁用Kotlinx序列化多态描述符?

时间:2020-05-27 22:08:01

标签: kotlin kotlinx.serialization

我正在为许多第三方API生成JSON。其中许多接受不同对象的列表(JSON数组),但是由于列表的多态性,它们都不接受由kotlinx序列化自动生成的"type": "com.mycom.someclass"

在我的用例中,我只关心序列化。不需要反序列化。

当前:

[{"type":"com.mycom.Child1","x":"child1"}, {"type":"com.mycom.Child2","y": 23}]

需要:

[{"x":"child1"}, {"y": 23}]

如何禁用这种自动行为?

1 个答案:

答案 0 :(得分:2)

看看Json parametric polymorphic deserialization

您还可以使用此类序列化器序列化数据。在这种情况下,将在运行时为实际属性类型选择已注册或默认的序列化程序。 不会添加任何类别标识符。

您需要使用JsonParametricSerializer并手动选择序列化程序。由于您不需要支持反序列化,因此实现起来很简单。