Class Jackson3HashMapper
java.lang.Object
org.springframework.data.redis.hash.Jackson3HashMapper
- All Implemented Interfaces:
HashMapper<Object,
String, Object>
ObjectMapper
based HashMapper
implementation that allows flattening. Given an entity Person
with an Address
like below the flattening will create individual hash entries for all nested properties and
resolve complex types into simple types, as far as possible.
Creation can be configured using builder()
to enable Jackson 2 compatibility mode (when migrating existing
data from Jackson 2) or to attach a custom MapperBuilder
configurer.
By default, JSON mapping uses default typing. Make sure to configure an appropriate PolymorphicTypeValidator
to prevent instantiation of unwanted types.
Flattening requires all property names to not interfere with JSON paths. Using dots or brackets in map keys or as property names is not supported using flattening. The resulting hash cannot be mapped back into an Object.
Example
class Person { String firstname; String lastname; Address address; Date date; LocalDateTime localDateTime; } class Address { String city; String country; }
Normal
Hash field | Value |
---|---|
firstname | Jon |
lastname | Snow |
address | { "city" : "Castle Black", "country" : "The North" } |
date | 1561543964015 |
localDateTime | 2018-01-02T12:13:14 |
Flat
Hash field | Value |
---|---|
firstname | Jon |
lastname | Snow |
address.city | Castle Black |
address.country | The North |
date | 1561543964015 |
localDateTime | 2018-01-02T12:13:14 |
- Since:
- 4.0
- Author:
- Christoph Strobl, Mark Paluch
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Jackson3HashMapper.Jackson3HashMapperBuilder<B extends tools.jackson.databind.cfg.MapperBuilder<? extends tools.jackson.databind.ObjectMapper,
? extends tools.jackson.databind.cfg.MapperBuilder<?, ?>>> Builder to create aJackson3HashMapper
instance. -
Constructor Summary
ConstructorsConstructorDescriptionJackson3HashMapper
(tools.jackson.databind.ObjectMapper mapper, boolean flatten) Creates a newJackson3HashMapper
initialized with a custom JacksonObjectMapper
. -
Method Summary
Modifier and TypeMethodDescriptionstatic Jackson3HashMapper.Jackson3HashMapperBuilder<tools.jackson.databind.json.JsonMapper.Builder>
builder()
Creates aJackson3HashMapper.Jackson3HashMapperBuilder
to build aJackson3HashMapper
instance usingJsonMapper
.static <B extends tools.jackson.databind.cfg.MapperBuilder<? extends tools.jackson.databind.ObjectMapper,
? extends tools.jackson.databind.cfg.MapperBuilder<?, ?>>>
Jackson3HashMapper.Jackson3HashMapperBuilder<B>Creates a newJackson3HashMapper.Jackson3HashMapperBuilder
to configure and build aJackson3HashMapper
.static Jackson3HashMapper
create
(Consumer<Jackson3HashMapper.Jackson3HashMapperBuilder<tools.jackson.databind.json.JsonMapper.Builder>> configurer) Creates a newJackson3HashMapper
allowing further configuration throughconfigurer
.static Jackson3HashMapper
Returns a flatteningJackson3HashMapper
using dot notation for properties.Convert ahash
(map) to an object.static Jackson3HashMapper
Returns aJackson3HashMapper
retain the hierarchical node structure created by Jackson.static void
preconfigure
(tools.jackson.databind.cfg.MapperBuilder<? extends tools.jackson.databind.ObjectMapper, ? extends tools.jackson.databind.cfg.MapperBuilder<?, ?>> builder, boolean jackson2Compatibility) Preconfigures the givenMapperBuilder
to create a JacksonObjectMapper
that is suitable for HashMapper use.Convert anobject
to a map that can be used with Redis hashes.
-
Constructor Details
-
Jackson3HashMapper
public Jackson3HashMapper(tools.jackson.databind.ObjectMapper mapper, boolean flatten) Creates a newJackson3HashMapper
initialized with a custom JacksonObjectMapper
.
-
-
Method Details
-
flattening
Returns a flatteningJackson3HashMapper
using dot notation for properties.- Returns:
- a flattening
Jackson3HashMapper
instance.
-
hierarchical
Returns aJackson3HashMapper
retain the hierarchical node structure created by Jackson.- Returns:
- a hierarchical
Jackson3HashMapper
instance.
-
create
public static Jackson3HashMapper create(Consumer<Jackson3HashMapper.Jackson3HashMapperBuilder<tools.jackson.databind.json.JsonMapper.Builder>> configurer) Creates a newJackson3HashMapper
allowing further configuration throughconfigurer
.- Parameters:
configurer
- the configurer forJackson3HashMapper.Jackson3HashMapperBuilder
.- Returns:
- a new
Jackson3HashMapper
instance.
-
builder
public static Jackson3HashMapper.Jackson3HashMapperBuilder<tools.jackson.databind.json.JsonMapper.Builder> builder()Creates aJackson3HashMapper.Jackson3HashMapperBuilder
to build aJackson3HashMapper
instance usingJsonMapper
.- Returns:
- a
Jackson3HashMapper.Jackson3HashMapperBuilder
to build aJackson3HashMapper
instance.
-
builder
public static <B extends tools.jackson.databind.cfg.MapperBuilder<? extends tools.jackson.databind.ObjectMapper,? extends tools.jackson.databind.cfg.MapperBuilder<?, Jackson3HashMapper.Jackson3HashMapperBuilder<B> builder?>>> (Supplier<B> builderFactory) Creates a newJackson3HashMapper.Jackson3HashMapperBuilder
to configure and build aJackson3HashMapper
.- Type Parameters:
B
- type of theMapperBuilder
to use.- Parameters:
builderFactory
- factory to create aMapperBuilder
for theObjectMapper
.- Returns:
- a new
Jackson3HashMapper.Jackson3HashMapperBuilder
.
-
preconfigure
public static void preconfigure(tools.jackson.databind.cfg.MapperBuilder<? extends tools.jackson.databind.ObjectMapper, ? extends tools.jackson.databind.cfg.MapperBuilder<?, ?>> builder, boolean jackson2Compatibility) Preconfigures the givenMapperBuilder
to create a JacksonObjectMapper
that is suitable for HashMapper use.- Parameters:
builder
- theMapperBuilder
to preconfigure.jackson2Compatibility
- whether to apply Jackson 2.x compatibility settings to read values written byJackson2HashMapper
.
-
toHash
Description copied from interface:HashMapper
Convert anobject
to a map that can be used with Redis hashes.- Specified by:
toHash
in interfaceHashMapper<Object,
String, Object> - Returns:
-
fromHash
Description copied from interface:HashMapper
Convert ahash
(map) to an object.- Specified by:
fromHash
in interfaceHashMapper<Object,
String, Object> - Returns:
-