Class Jackson2ObjectMapperBuilder
ObjectMapper
instances with a fluent API.
It customizes Jackson's default properties with the following ones:
MapperFeature.DEFAULT_VIEW_INCLUSION
is disabledDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
is disabled
It also automatically registers the following well-known modules if they are detected on the classpath:
- jackson-datatype-jdk8:
support for other Java 8 types like
Optional
- jackson-datatype-jsr310: support for Java 8 Date & Time API types
- jackson-module-kotlin: support for Kotlin classes and data classes
Compatible with Jackson 2.9 to 2.12, as of Spring 5.3.
- Since:
- 4.1.1
- Author:
- Sebastien Deleuze, Juergen Hoeller, Tadaya Tsuyukubo, EddĂș MelĂ©ndez
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionannotationIntrospector
(AnnotationIntrospector annotationIntrospector) Set anAnnotationIntrospector
for both serialization and deserialization.annotationIntrospector
(Function<AnnotationIntrospector, AnnotationIntrospector> pairingFunction) Alternative toannotationIntrospector(AnnotationIntrospector)
that allows combining with rather than replacing the currently set introspector, e.g.applicationContext
(ApplicationContext applicationContext) Set the SpringApplicationContext
in order to autowire Jackson handlers (JsonSerializer
,JsonDeserializer
,KeyDeserializer
,TypeResolverBuilder
andTypeIdResolver
).autoDetectFields
(boolean autoDetectFields) Shortcut forMapperFeature.AUTO_DETECT_FIELDS
option.autoDetectGettersSetters
(boolean autoDetectGettersSetters) <T extends ObjectMapper>
Tbuild()
Build a newObjectMapper
instance.static Jackson2ObjectMapperBuilder
cbor()
Obtain aJackson2ObjectMapperBuilder
instance in order to build a CBOR data formatObjectMapper
instance.void
configure
(ObjectMapper objectMapper) Configure an existingObjectMapper
instance with this builder's settings.createXmlMapper
(boolean createXmlMapper) If set totrue
, anXmlMapper
will be created using its default constructor.dateFormat
(DateFormat dateFormat) Define the format for date/time with the givenDateFormat
.defaultTyping
(TypeResolverBuilder<?> typeResolverBuilder) Specify aTypeResolverBuilder
to use for Jackson's default typing.defaultUseWrapper
(boolean defaultUseWrapper) Define if a wrapper will be used for indexed (List, array) properties or not by default (only applies toXmlMapper
).defaultViewInclusion
(boolean defaultViewInclusion) Shortcut forMapperFeature.DEFAULT_VIEW_INCLUSION
option.deserializerByType
(Class<?> type, JsonDeserializer<?> deserializer) Configure a custom deserializer for the given type.deserializers
(JsonDeserializer<?>... deserializers) Configure custom deserializers.deserializersByType
(Map<Class<?>, JsonDeserializer<?>> deserializers) Configure custom deserializers for the given types.factory
(JsonFactory factory) Define theJsonFactory
to be used to create theObjectMapper
instance.failOnEmptyBeans
(boolean failOnEmptyBeans) Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANS
option.failOnUnknownProperties
(boolean failOnUnknownProperties) Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
option.featuresToDisable
(Object... featuresToDisable) Specify features to disable.featuresToEnable
(Object... featuresToEnable) Specify features to enable.filters
(FilterProvider filters) Set the global filters to use in order to support@JsonFilter
annotated POJO.findModulesViaServiceLoader
(boolean findModules) Set whether to let Jackson find available modules via the JDK ServiceLoader, based on META-INF metadata in the classpath.handlerInstantiator
(HandlerInstantiator handlerInstantiator) Customize the construction of Jackson handlers (JsonSerializer
,JsonDeserializer
,KeyDeserializer
,TypeResolverBuilder
andTypeIdResolver
).indentOutput
(boolean indentOutput) Shortcut forSerializationFeature.INDENT_OUTPUT
option.static Jackson2ObjectMapperBuilder
json()
Obtain aJackson2ObjectMapperBuilder
instance in order to build a regular JSONObjectMapper
instance.Override the defaultLocale
to use for formatting.Override the defaultLocale
to use for formatting.Add mix-in annotations to use for augmenting specified class or interface.Add mix-in annotations to use for augmenting specified class or interface.moduleClassLoader
(ClassLoader moduleClassLoader) Set the ClassLoader to use for loading Jackson extension modules.Specify the modules to be registered with theObjectMapper
.Variant ofmodules(Module...)
with aConsumer
for full control over the underlying list of modules.Variant ofmodules(Module...)
with aList
.modulesToInstall
(Module... modules) Specify one or more modules to be registered with theObjectMapper
.modulesToInstall
(Class<? extends Module>... modules) Specify one or more modules by class to be registered with theObjectMapper
.modulesToInstall
(Consumer<List<Module>> consumer) Variant ofmodulesToInstall(Module...)
with aConsumer
for full control over the underlying list of modules.postConfigurer
(Consumer<ObjectMapper> configurer) An option to apply additional customizations directly to theObjectMapper
instances at the end, after all other config properties of the builder have been applied.propertyNamingStrategy
(PropertyNamingStrategy propertyNamingStrategy) Specify aPropertyNamingStrategy
to configure theObjectMapper
with.serializationInclusion
(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion) Set a custom inclusion strategy for serialization.serializationInclusion
(com.fasterxml.jackson.annotation.JsonInclude.Value serializationInclusion) Set a custom inclusion strategy for serialization.serializerByType
(Class<?> type, JsonSerializer<?> serializer) Configure a custom serializer for the given type.serializers
(JsonSerializer<?>... serializers) Configure custom serializers.serializersByType
(Map<Class<?>, JsonSerializer<?>> serializers) Configure custom serializers for the given types.simpleDateFormat
(String format) Define the date/time format with aSimpleDateFormat
.static Jackson2ObjectMapperBuilder
smile()
Obtain aJackson2ObjectMapperBuilder
instance in order to build a Smile data formatObjectMapper
instance.Override the defaultTimeZone
to use for formatting.Override the defaultTimeZone
to use for formatting.visibility
(com.fasterxml.jackson.annotation.PropertyAccessor accessor, com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility visibility) Specify visibility to limit what kind of properties are auto-detected.static Jackson2ObjectMapperBuilder
xml()
Obtain aJackson2ObjectMapperBuilder
instance in order to build anXmlMapper
instance.
-
Constructor Details
-
Jackson2ObjectMapperBuilder
public Jackson2ObjectMapperBuilder()
-
-
Method Details
-
createXmlMapper
If set totrue
, anXmlMapper
will be created using its default constructor. This is only applicable tobuild()
calls, not toconfigure(com.fasterxml.jackson.databind.ObjectMapper)
calls. -
factory
Define theJsonFactory
to be used to create theObjectMapper
instance.- Since:
- 5.0
-
dateFormat
Define the format for date/time with the givenDateFormat
.Note: Setting this property makes the exposed
ObjectMapper
non-thread-safe, according to Jackson's thread safety rules.- See Also:
-
simpleDateFormat
Define the date/time format with aSimpleDateFormat
.Note: Setting this property makes the exposed
ObjectMapper
non-thread-safe, according to Jackson's thread safety rules.- See Also:
-
locale
Override the defaultLocale
to use for formatting. Default value used isLocale.getDefault()
.- Since:
- 4.1.5
-
locale
Override the defaultLocale
to use for formatting. Default value used isLocale.getDefault()
.- Parameters:
localeString
- the locale ID as a String representation- Since:
- 4.1.5
-
timeZone
Override the defaultTimeZone
to use for formatting. Default value used is UTC (NOT local timezone).- Since:
- 4.1.5
-
timeZone
Override the defaultTimeZone
to use for formatting. Default value used is UTC (NOT local timezone).- Parameters:
timeZoneString
- the zone ID as a String representation- Since:
- 4.1.5
-
annotationIntrospector
public Jackson2ObjectMapperBuilder annotationIntrospector(AnnotationIntrospector annotationIntrospector) Set anAnnotationIntrospector
for both serialization and deserialization. -
annotationIntrospector
public Jackson2ObjectMapperBuilder annotationIntrospector(Function<AnnotationIntrospector, AnnotationIntrospector> pairingFunction) Alternative toannotationIntrospector(AnnotationIntrospector)
that allows combining with rather than replacing the currently set introspector, e.g. viaAnnotationIntrospector.pair(AnnotationIntrospector, AnnotationIntrospector)
.- Parameters:
pairingFunction
- a function to apply to the currently set introspector (possiblynull
); the result of the function becomes the new introspector.- Since:
- 5.2.4
-
propertyNamingStrategy
public Jackson2ObjectMapperBuilder propertyNamingStrategy(PropertyNamingStrategy propertyNamingStrategy) Specify aPropertyNamingStrategy
to configure theObjectMapper
with. -
defaultTyping
Specify aTypeResolverBuilder
to use for Jackson's default typing.- Since:
- 4.2.2
-
serializationInclusion
public Jackson2ObjectMapperBuilder serializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion) Set a custom inclusion strategy for serialization.- See Also:
-
JsonInclude.Include
-
serializationInclusion
public Jackson2ObjectMapperBuilder serializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Value serializationInclusion) Set a custom inclusion strategy for serialization.- Since:
- 5.3
- See Also:
-
JsonInclude.Value
-
filters
Set the global filters to use in order to support@JsonFilter
annotated POJO.- Since:
- 4.2
- See Also:
-
mixIn
Add mix-in annotations to use for augmenting specified class or interface.- Parameters:
target
- class (or interface) whose annotations to effectively overridemixinSource
- class (or interface) whose annotations are to be "added" to target's annotations as value- Since:
- 4.1.2
- See Also:
-
mixIns
Add mix-in annotations to use for augmenting specified class or interface.- Parameters:
mixIns
- a Map of entries with target classes (or interface) whose annotations to effectively override as key and mix-in classes (or interface) whose annotations are to be "added" to target's annotations as value.- Since:
- 4.1.2
- See Also:
-
serializers
Configure custom serializers. Each serializer is registered for the type returned byJsonSerializer.handledType()
, which must not benull
.- See Also:
-
serializerByType
Configure a custom serializer for the given type.- Since:
- 4.1.2
- See Also:
-
serializersByType
Configure custom serializers for the given types.- See Also:
-
deserializers
Configure custom deserializers. Each deserializer is registered for the type returned byJsonDeserializer.handledType()
, which must not benull
.- Since:
- 4.3
- See Also:
-
deserializerByType
public Jackson2ObjectMapperBuilder deserializerByType(Class<?> type, JsonDeserializer<?> deserializer) Configure a custom deserializer for the given type.- Since:
- 4.1.2
-
deserializersByType
public Jackson2ObjectMapperBuilder deserializersByType(Map<Class<?>, JsonDeserializer<?>> deserializers) Configure custom deserializers for the given types. -
autoDetectFields
Shortcut forMapperFeature.AUTO_DETECT_FIELDS
option. -
autoDetectGettersSetters
-
defaultViewInclusion
Shortcut forMapperFeature.DEFAULT_VIEW_INCLUSION
option. -
failOnUnknownProperties
Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
option. -
failOnEmptyBeans
Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANS
option. -
indentOutput
Shortcut forSerializationFeature.INDENT_OUTPUT
option. -
defaultUseWrapper
Define if a wrapper will be used for indexed (List, array) properties or not by default (only applies toXmlMapper
).- Since:
- 4.3
-
visibility
public Jackson2ObjectMapperBuilder visibility(com.fasterxml.jackson.annotation.PropertyAccessor accessor, com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility visibility) Specify visibility to limit what kind of properties are auto-detected.- Since:
- 5.1
- See Also:
-
PropertyAccessor
JsonAutoDetect.Visibility
-
featuresToEnable
Specify features to enable. -
featuresToDisable
Specify features to disable. -
modules
Specify the modules to be registered with theObjectMapper
.Multiple invocations are not additive, the last one defines the modules to register.
Note: If this is set, no finding of modules is going to happen - not by Jackson, and not by Spring either (see
findModulesViaServiceLoader
). As a consequence, specifying an empty list here will suppress any kind of module detection.Specify either this or
modulesToInstall(com.fasterxml.jackson.databind.Module...)
, not both.- Since:
- 4.1.5
- See Also:
-
modules
Variant ofmodules(Module...)
with aList
.- See Also:
-
modules
Variant ofmodules(Module...)
with aConsumer
for full control over the underlying list of modules.- Since:
- 6.0
- See Also:
-
modulesToInstall
Specify one or more modules to be registered with theObjectMapper
.Multiple invocations are not additive, the last one defines the modules to register.
Modules specified here will be registered after Spring's autodetection of JSR-310 and Joda-Time, or Jackson's finding of modules (see
findModulesViaServiceLoader
), allowing to eventually override their configuration.Specify either this or
modules(Module...)
, not both.- Since:
- 4.1.5
- See Also:
-
modulesToInstall
Variant ofmodulesToInstall(Module...)
with aConsumer
for full control over the underlying list of modules.- Since:
- 6.0
- See Also:
-
modulesToInstall
@SafeVarargs public final Jackson2ObjectMapperBuilder modulesToInstall(Class<? extends Module>... modules) Specify one or more modules by class to be registered with theObjectMapper
.Multiple invocations are not additive, the last one defines the modules to register.
Modules specified here will be registered after Spring's autodetection of JSR-310 and Joda-Time, or Jackson's finding of modules (see
findModulesViaServiceLoader
), allowing to eventually override their configuration.Specify either this or
modules(Module...)
, not both. -
findModulesViaServiceLoader
Set whether to let Jackson find available modules via the JDK ServiceLoader, based on META-INF metadata in the classpath.If this mode is not set, Spring's Jackson2ObjectMapperBuilder itself will try to find the JSR-310 and Joda-Time support modules on the classpath - provided that Java 8 and Joda-Time themselves are available, respectively.
- See Also:
-
moduleClassLoader
Set the ClassLoader to use for loading Jackson extension modules. -
handlerInstantiator
Customize the construction of Jackson handlers (JsonSerializer
,JsonDeserializer
,KeyDeserializer
,TypeResolverBuilder
andTypeIdResolver
).- Since:
- 4.1.3
- See Also:
-
applicationContext
Set the SpringApplicationContext
in order to autowire Jackson handlers (JsonSerializer
,JsonDeserializer
,KeyDeserializer
,TypeResolverBuilder
andTypeIdResolver
).- Since:
- 4.1.3
- See Also:
-
postConfigurer
An option to apply additional customizations directly to theObjectMapper
instances at the end, after all other config properties of the builder have been applied.- Parameters:
configurer
- a configurer to apply. If several configurers are registered, they will get applied in their registration order.- Since:
- 5.3
-
build
Build a newObjectMapper
instance.Each build operation produces an independent
ObjectMapper
instance. The builder's settings can get modified, with a subsequent build operation then producing a newObjectMapper
based on the most recent settings.- Returns:
- the newly built ObjectMapper
-
configure
Configure an existingObjectMapper
instance with this builder's settings. This can be applied to any number ofObjectMappers
.- Parameters:
objectMapper
- the ObjectMapper to configure
-
json
Obtain aJackson2ObjectMapperBuilder
instance in order to build a regular JSONObjectMapper
instance. -
xml
Obtain aJackson2ObjectMapperBuilder
instance in order to build anXmlMapper
instance. -
smile
Obtain aJackson2ObjectMapperBuilder
instance in order to build a Smile data formatObjectMapper
instance.- Since:
- 5.0
-
cbor
Obtain aJackson2ObjectMapperBuilder
instance in order to build a CBOR data formatObjectMapper
instance.- Since:
- 5.0
-