Skip to content

SerializationManagerBuilder

Constructors

SerializationManagerBuilder

constructor()

Types

DynamicOpRegistryBuilder

SerializerRegistryBuilder

Functions

module

fun module(block: SerializersModuleBuilder.() -> Unit)

Uses the SerializersModuleBuilder to configure the shared module between all serializer instances.

Parameters

  • block: A builder function for creating a SerializersModule

registerDynamicOp

Registers a new DynamicOps instance with its associated encode and decode functions. This is used when you convert a KSerializer into a Codec via SerializerCodec.

Usage
registerDynamicOp(JsonOps.INSTANCE) {
 encode { input, strategy -> json.encodeToJsonElement(strategy, input).toGson }
 decode { input, strategy ->
  require(input is GsonElement) { "Expected input of type JsonElement but received ${input.javaClass.simpleName}." }

  json.decodeFromJsonElement(strategy, input.toKson)
 }
}

Parameters

  • op: The DynamicOps instance.

  • block: The builder function of the DynamicOpRegistry

registerSerializer

fun registerSerializer(
    descriptor: SerialDescriptor, 
    name: String? = null, 
    block: SerializationManager.SerializationManagerBuilder.SerializerRegistryBuilder.() -> Unit
)

Registers a new Serializer with its associated encode and decode functions. This is used when you convert a Codec into KSerializer.

Note: Because a limitation of the Codec structure you need an "intermediary" such as JsonElement or NbtTag for example.

Usage
registerSerializer(JsonElement.serializer().descriptor) {
 encode(JsonEncoder::class) { encoder, codec, input ->
  encoder.encodeJsonElement(codec.encodeStart(KOps.Json, input).orThrow)
 }

 decode(JsonDecoder::class) { decoder, codec ->
  codec.parse(KOps.Json, decoder.decodeJsonElement()).orThrow
 }
}

Parameters

  • descriptor: The descriptor of the serializer

  • name: An optional name for the element in the CodecSerializer descriptor

  • block: The builder function of the SerializerRegistry