【问题标题】:How to disable kotlinx serialization polymorphic descriminator?如何禁用 kotlinx 序列化多态鉴别器?
【发布时间】:2020-09-15 02:49:21
【问题描述】:

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

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

当前:

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

需要:

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

如何禁用此自动行为?

【问题讨论】:

  • 没有简单的方法可以做到这一点。见this issue

标签: kotlin kotlinx.serialization


【解决方案1】:

看看Json parametric polymorphic deserialization

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

您需要 impelement JsonParametricSerializer 并手动选择序列化程序。由于您不需要支持反序列化,因此实现将是微不足道的。

【讨论】:

  • 我认为这种方法不适用于嵌套的密封层次结构。也就是说,JsonParametricSerializer 只能在类层次结构的顶层使用。
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2022-08-20
相关资源
最近更新 更多