kotlinx-serialization / kotlinx.serialization.modules / SerializersModuleBuilder

SerializersModuleBuilder

(common, js, jvm, native) class SerializersModuleBuilder : SerialModuleCollector

A builder class for SerializersModule DSL. To create an instance of builder, use SerializersModule factory function.

Functions

(common, js, jvm, native)

contextual

Adds serializer associated with given kClass for contextual serialization. Throws SerializationException if a module already has serializer associated with a kClass. To overwrite an already registered serializer, SerialModule.overwriteWith can be used.

fun <T : Any> contextual(kClass: KClass<T>, serializer: KSerializer<T>): Unit

A reified version of contextual(KClass, Serializer)

fun <T : Any> contextual(): Unit
(common, js, jvm, native)

defaultPolymorphic

Accept a default serializer provider, associated with the baseClass for polymorphic serialization.

fun <Base : Any> defaultPolymorphic(baseClass: KClass<Base>, defaultSerializerProvider: (className: String) -> DeserializationStrategy<out Base>?): Unit
(common, js, jvm, native)

include

Copies contents of other module into the current builder.

fun include(other: SerialModule): Unit
(common, js, jvm, native)

polymorphic

Adds serializer associated with given actualClass in the scope of baseClass for polymorphic serialization. Throws SerializationException if a module already has serializer associated with a actualClass. To overwrite an already registered serializer, SerialModule.overwriteWith can be used.

fun <Base : Any, Sub : Base> polymorphic(baseClass: KClass<Base>, actualClass: KClass<Sub>, actualSerializer: KSerializer<Sub>): Unit

Creates a builder to register all subclasses of a given baseClass for polymorphic serialization. If baseSerializer is not null, registers it as a serializer for baseClass (which is useful if base class is serializable). To add subclasses, use PolymorphicModuleBuilder.subclass or PolymorphicModuleBuilder.with.

fun <Base : Any> polymorphic(baseClass: KClass<Base>, baseSerializer: KSerializer<Base>? = null, buildAction: PolymorphicModuleBuilder<Base>.() -> Unit = {}): Unitfun <Base : Any> polymorphic(baseSerializer: KSerializer<Base>? = null, buildAction: PolymorphicModuleBuilder<Base>.() -> Unit = {}): Unit

Creates a builder to register all serializable subclasses for polymorphic serialization for multiple base classes. This is useful when you have more two or more super classes in a large hierarchy, e.g.:

fun polymorphic(baseClass: KClass<*>, vararg baseClasses: KClass<*>, buildAction: PolymorphicModuleBuilder<Any>.() -> Unit = {}): Unit