kotlinx.serialization полиморф c список - PullRequest
0 голосов
/ 12 марта 2020

Можно ли сериализовать список этих полиморфных c абстрактных классов? Я хотел бы использовать что-то вроде этого:

Json.stringify(PowerStrategy.serializer.list, entities)

Абстрактный класс

@Polymorphic
abstract class PowerStrategy{

    companion object{
        val serializer by lazy {
            SerializersModule {
                polymorphic(PowerStrategy::class) {
                    BlockOptimizer::class with BlockOptimizer.serializer()
                }
            }
        }
    }

    abstract val from: LocalTime
    abstract val to: LocalTime
    abstract fun applyToPowerPlan(plan: DayPowerPlan)
}

Одна из многих реализаций PowerStrategy

@SerialName("block_optimizer")
@Serializable
data class BlockOptimizer(
    @ContextualSerialization
    override val from: LocalTime,
    @ContextualSerialization
    override val to: LocalTime,
    val blockLength: Int,
    val numberOfBlocks: Int,
    var weights:Array<Double> = Array(4*24){1.0}
) : PowerStrategy() {...}

Если мне потребуется Пользовательский список сериализатора, пожалуйста, предоставьте шаблон.

...