Как отключить дескриминатор polymorphi c сериализации kotlinx? - PullRequest
3 голосов
/ 28 мая 2020

Я генерирую JSON для ряда сторонних API. Многие из них принимают список (JSON массив) различных объектов, однако ни один из них не будет принимать "type": "com.mycom.someclass", автоматически сгенерированный сериализацией kotlinx из-за полиморфной c природы списка.

В моем случае меня интересует только сериализация. Десериализация не требуется.

Текущий:

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

Требуется:

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

Как я могу отключить это автоматическое c поведение?

1 Ответ

2 голосов
/ 28 мая 2020

Взгляните на Json параметры c polymorphi c deserialization :

Вы также можете сериализовать данные с помощью такого сериализатора. В этом случае для фактического типа свойства во время выполнения будет выбран либо зарегистрированный сериализатор, либо сериализатор по умолчанию. Дискриминатор классов не добавляется.

Вам нужно будет задействовать JsonParametricSerializer и вручную выбрать сериализатор. Поскольку вам не нужно поддерживать десериализацию, реализация будет тривиальной.

...