public class JacksonJsonRedisSerializer<T> extends Object implements RedisSerializer<T>
RedisSerializer
that can read and write JSON using Jackson's
ObjectMapper
.
This converter can be used to bind to typed beans, or untyped HashMap
instances.
Note:Null objects are serialized as empty arrays and vice versa.
Modifier and Type | Field and Description |
---|---|
static Charset |
DEFAULT_CHARSET |
Constructor and Description |
---|
JacksonJsonRedisSerializer(Class<T> type) |
Modifier and Type | Method and Description |
---|---|
T |
deserialize(byte[] bytes)
Deserialize an object from the given binary data.
|
protected JavaType |
getJavaType(Class<?> clazz)
Returns the Jackson
JavaType for the specific class. |
byte[] |
serialize(Object t)
Serialize the given object to binary data.
|
void |
setObjectMapper(ObjectMapper objectMapper)
Sets the
ObjectMapper for this view. |
public static final Charset DEFAULT_CHARSET
public T deserialize(byte[] bytes) throws SerializationException
RedisSerializer
deserialize
in interface RedisSerializer<T>
bytes
- object binary representationSerializationException
public byte[] serialize(Object t) throws SerializationException
RedisSerializer
serialize
in interface RedisSerializer<T>
t
- object to serializeSerializationException
public void setObjectMapper(ObjectMapper objectMapper)
ObjectMapper
for this view. If not set, a default ObjectMapper
is used.
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. The other option for refining the serialization process is to use
Jackson's provided annotations on the types to be serialized, in which case a custom-configured ObjectMapper is
unnecessary.
protected JavaType getJavaType(Class<?> clazz)
JavaType
for the specific class.
Default implementation returns TypeFactory.type(java.lang.reflect.Type)
, but this can be overridden in
subclasses, to allow for custom generic collection handling. For instance:
protected JavaType getJavaType(Class<?> clazz) { if (List.class.isAssignableFrom(clazz)) { return TypeFactory.collectionType(ArrayList.class, MyBean.class); } else { return super.getJavaType(clazz); } }
clazz
- the class to return the java type for