如何禁用 kotlinx 序列化多态判别器?

New*_*bie 6 kotlin kotlinx.serialization

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

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

当前的:

[{"type":"com.mycom.Child1","x":"child1"}, {"type":"com.mycom.Child2","y": 23}]
Run Code Online (Sandbox Code Playgroud)

需要:

[{"x":"child1"}, {"y": 23}]
Run Code Online (Sandbox Code Playgroud)

如何禁用此自动行为?

mad*_*ead 3

看一下Json参数多态反序列化

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

您需要实现JsonParametricSerializer并手动选择序列化器。由于您不需要支持反序列化,因此实现会很简单。