Class KotlinSerializationJsonDecoder

java.lang.Object
org.springframework.core.codec.AbstractDecoder<Object>
org.springframework.http.codec.json.KotlinSerializationJsonDecoder
All Implemented Interfaces:
Decoder<Object>

public class KotlinSerializationJsonDecoder extends AbstractDecoder<Object>
Decode a byte stream into JSON and convert to Object's with kotlinx.serialization.

This decoder can be used to bind @Serializable Kotlin classes, open polymorphic serialization is not supported. It supports application/json and application/*+json with various character sets, UTF-8 being the default.

Decoding streams is not supported yet, see kotlinx.serialization/issues/1073 related issue.

Since:
5.3
Author:
Sebastien Deleuze
  • Constructor Details

    • KotlinSerializationJsonDecoder

      public KotlinSerializationJsonDecoder()
    • KotlinSerializationJsonDecoder

      public KotlinSerializationJsonDecoder(kotlinx.serialization.json.Json json)
  • Method Details

    • setMaxInMemorySize

      public void setMaxInMemorySize(int byteCount)
      Configure a limit on the number of bytes that can be buffered whenever the input stream needs to be aggregated. This can be a result of decoding to a single DataBuffer, ByteBuffer, byte[], Resource, String, etc. It can also occur when splitting the input stream, e.g. delimited text, in which case the limit applies to data buffered between delimiters.

      By default this is set to 256K.

      Parameters:
      byteCount - the max number of bytes to buffer, or -1 for unlimited
    • getMaxInMemorySize

      public int getMaxInMemorySize()
      Return the configured byte count limit.
    • canDecode

      public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType)
      Description copied from interface: Decoder
      Whether the decoder supports the given target element type and the MIME type of the source stream.
      Specified by:
      canDecode in interface Decoder<Object>
      Overrides:
      canDecode in class AbstractDecoder<Object>
      Parameters:
      elementType - the target element type for the output stream
      mimeType - the mime type associated with the stream to decode (can be null if not specified)
      Returns:
      true if supported, false otherwise
    • decode

      public reactor.core.publisher.Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a DataBuffer input stream into a Flux of T.
      Parameters:
      inputStream - the DataBuffer input stream to decode
      elementType - the expected type of elements in the output stream; this type must have been previously passed to the Decoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType) method and it must have returned true.
      mimeType - the MIME type associated with the input stream (optional)
      hints - additional information about how to do decode
      Returns:
      the output stream with decoded elements
    • decodeToMono

      public reactor.core.publisher.Mono<Object> decodeToMono(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a DataBuffer input stream into a Mono of T.
      Specified by:
      decodeToMono in interface Decoder<Object>
      Overrides:
      decodeToMono in class AbstractDecoder<Object>
      Parameters:
      inputStream - the DataBuffer input stream to decode
      elementType - the expected type of elements in the output stream; this type must have been previously passed to the Decoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType) method and it must have returned true.
      mimeType - the MIME type associated with the input stream (optional)
      hints - additional information about how to do decode
      Returns:
      the output stream with the decoded element