Class GenericJackson2JsonRedisSerializer

java.lang.Object
org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
All Implemented Interfaces:
RedisSerializer<Object>

public class GenericJackson2JsonRedisSerializer extends Object implements RedisSerializer<Object>
Generic Jackson 2-based RedisSerializer that maps objects to JSON using dynamic typing.

JSON reading and writing can be customized by configuring JacksonObjectReader respective JacksonObjectWriter.

Since:
1.6
Author:
Christoph Strobl, Mark Paluch, Mao Shuai
  • Constructor Details

    • GenericJackson2JsonRedisSerializer

      public GenericJackson2JsonRedisSerializer()
      Creates GenericJackson2JsonRedisSerializer and configures ObjectMapper for default typing.
    • GenericJackson2JsonRedisSerializer

      public GenericJackson2JsonRedisSerializer(@Nullable String classPropertyTypeName)
      Creates GenericJackson2JsonRedisSerializer and configures ObjectMapper for default typing using the given name. In case of an empty or null String the default JsonTypeInfo.Id.CLASS will be used.
      Parameters:
      classPropertyTypeName - name of the JSON property holding type information. Can be null.
      See Also:
      • ObjectMapper.activateDefaultTypingAsProperty(PolymorphicTypeValidator, DefaultTyping, String)
      • ObjectMapper.activateDefaultTyping(PolymorphicTypeValidator, DefaultTyping, As)
    • GenericJackson2JsonRedisSerializer

      public GenericJackson2JsonRedisSerializer(@Nullable String classPropertyTypeName, JacksonObjectReader reader, JacksonObjectWriter writer)
      Creates GenericJackson2JsonRedisSerializer and configures ObjectMapper for default typing using the given name. In case of an empty or null String the default JsonTypeInfo.Id.CLASS will be used.
      Parameters:
      classPropertyTypeName - name of the JSON property holding type information. Can be null.
      reader - the JacksonObjectReader function to read objects using ObjectMapper.
      writer - the JacksonObjectWriter function to write objects using ObjectMapper.
      Since:
      3.0
      See Also:
      • ObjectMapper.activateDefaultTypingAsProperty(PolymorphicTypeValidator, DefaultTyping, String)
      • ObjectMapper.activateDefaultTyping(PolymorphicTypeValidator, DefaultTyping, As)
    • GenericJackson2JsonRedisSerializer

      public GenericJackson2JsonRedisSerializer(com.fasterxml.jackson.databind.ObjectMapper mapper)
      Setting a custom-configured ObjectMapper is one way to take further control of the JSON serialization process. For example, an extended SerializerFactory can be configured that provides custom serializers for specific types.
      Parameters:
      mapper - must not be null.
    • GenericJackson2JsonRedisSerializer

      public GenericJackson2JsonRedisSerializer(com.fasterxml.jackson.databind.ObjectMapper mapper, JacksonObjectReader reader, JacksonObjectWriter writer)
      Setting a custom-configured ObjectMapper is one way to take further control of the JSON serialization process. For example, an extended SerializerFactory can be configured that provides custom serializers for specific types.
      Parameters:
      mapper - must not be null.
      reader - the JacksonObjectReader function to read objects using ObjectMapper.
      writer - the JacksonObjectWriter function to write objects using ObjectMapper.
      Since:
      3.0
  • Method Details

    • registerNullValueSerializer

      public static void registerNullValueSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper, @Nullable String classPropertyTypeName)
      Register GenericJackson2JsonRedisSerializer.NullValueSerializer in the given ObjectMapper with an optional classPropertyTypeName. This method should be called by code that customizes GenericJackson2JsonRedisSerializer by providing an external ObjectMapper.
      Parameters:
      objectMapper - the object mapper to customize.
      classPropertyTypeName - name of the type property. Defaults to @class if null/empty.
      Since:
      2.2
    • serialize

      public byte[] serialize(@Nullable Object source) throws SerializationException
      Description copied from interface: RedisSerializer
      Serialize the given object to binary data.
      Specified by:
      serialize in interface RedisSerializer<Object>
      Parameters:
      source - object to serialize. Can be null.
      Returns:
      the equivalent binary data. Can be null.
      Throws:
      SerializationException
    • deserialize

      public Object deserialize(@Nullable byte[] source) throws SerializationException
      Description copied from interface: RedisSerializer
      Deserialize an object from the given binary data.
      Specified by:
      deserialize in interface RedisSerializer<Object>
      Parameters:
      source - object binary representation. Can be null.
      Returns:
      the equivalent object instance. Can be null.
      Throws:
      SerializationException
    • deserialize

      @Nullable public <T> T deserialize(@Nullable byte[] source, Class<T> type) throws SerializationException
      Parameters:
      source - can be null.
      type - must not be null.
      Returns:
      null for empty source.
      Throws:
      SerializationException
    • resolveType

      protected com.fasterxml.jackson.databind.JavaType resolveType(byte[] source, Class<?> type) throws IOException
      Throws:
      IOException