Class Jackson2ObjectMapperBuilder
ObjectMapper instances with a fluent API.
It customizes Jackson's default properties with the following ones:
MapperFeature.DEFAULT_VIEW_INCLUSIONis disabledDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESis 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
- jackson-modules-java8/parameter-names: support for accessing parameter names
- Since:
- 4.1.1
- Author:
- Sebastien Deleuze, Juergen Hoeller, Tadaya Tsuyukubo, EddĂș MelĂ©ndez, Hyoungjune Kim
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionannotationIntrospector(com.fasterxml.jackson.databind.AnnotationIntrospector annotationIntrospector) Set anAnnotationIntrospectorfor both serialization and deserialization.annotationIntrospector(Function<@Nullable com.fasterxml.jackson.databind.AnnotationIntrospector, @Nullable com.fasterxml.jackson.databind.AnnotationIntrospector> pairingFunction) Alternative toannotationIntrospector(AnnotationIntrospector)that allows combining with rather than replacing the currently set introspector, for example, viaAnnotationIntrospector.pair(AnnotationIntrospector, AnnotationIntrospector).applicationContext(ApplicationContext applicationContext) Set the SpringApplicationContextin order to autowire Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).autoDetectFields(boolean autoDetectFields) Shortcut forMapperFeature.AUTO_DETECT_FIELDSoption.autoDetectGettersSetters(boolean autoDetectGettersSetters) Shortcut forMapperFeature.AUTO_DETECT_SETTERS/MapperFeature.AUTO_DETECT_GETTERS/MapperFeature.AUTO_DETECT_IS_GETTERSoptions.<T extends com.fasterxml.jackson.databind.ObjectMapper>
Tbuild()Build a newObjectMapperinstance.static Jackson2ObjectMapperBuildercbor()Obtain aJackson2ObjectMapperBuilderinstance in order to build a CBOR data formatObjectMapperinstance.voidconfigure(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Configure an existingObjectMapperinstance with this builder's settings.createXmlMapper(boolean createXmlMapper) If set totrue, anXmlMapperwill be created using its default constructor.dateFormat(DateFormat dateFormat) Define the format for date/time with the givenDateFormat.defaultTyping(com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> typeResolverBuilder) Specify aTypeResolverBuilderto 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_INCLUSIONoption.deserializerByType(Class<?> type, com.fasterxml.jackson.databind.JsonDeserializer<?> deserializer) Configure a custom deserializer for the given type.deserializers(com.fasterxml.jackson.databind.JsonDeserializer<?>... deserializers) Configure custom deserializers.deserializersByType(Map<Class<?>, com.fasterxml.jackson.databind.JsonDeserializer<?>> deserializers) Configure custom deserializers for the given types.factory(com.fasterxml.jackson.core.JsonFactory factory) Define theJsonFactoryto be used to create theObjectMapperinstance.failOnEmptyBeans(boolean failOnEmptyBeans) Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANSoption.failOnUnknownProperties(boolean failOnUnknownProperties) Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESoption.featuresToDisable(Object... featuresToDisable) Specify features to disable.featuresToEnable(Object... featuresToEnable) Specify features to enable.filters(com.fasterxml.jackson.databind.ser.FilterProvider filters) Set the global filters to use in order to support@JsonFilterannotated 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(com.fasterxml.jackson.databind.cfg.HandlerInstantiator handlerInstantiator) Customize the construction of Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).indentOutput(boolean indentOutput) Shortcut forSerializationFeature.INDENT_OUTPUToption.static Jackson2ObjectMapperBuilderjson()Obtain aJackson2ObjectMapperBuilderinstance in order to build a regular JSONObjectMapperinstance.Override the defaultLocaleto use for formatting.Override the defaultLocaleto 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.modules(com.fasterxml.jackson.databind.Module... modules) Specify the modules to be registered with theObjectMapper.Variant ofmodules(Module...)with aConsumerfor full control over the underlying list of modules.Variant ofmodules(Module...)with aList.modulesToInstall(com.fasterxml.jackson.databind.Module... modules) Specify one or more modules to be registered with theObjectMapper.modulesToInstall(Class<? extends com.fasterxml.jackson.databind.Module>... modules) Specify one or more modules by class to be registered with theObjectMapper.modulesToInstall(Consumer<List<com.fasterxml.jackson.databind.Module>> consumer) Variant ofmodulesToInstall(Module...)with aConsumerfor full control over the underlying list of modules.postConfigurer(Consumer<com.fasterxml.jackson.databind.ObjectMapper> configurer) An option to apply additional customizations directly to theObjectMapperinstances at the end, after all other config properties of the builder have been applied.propertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategy propertyNamingStrategy) Specify aPropertyNamingStrategyto configure theObjectMapperwith.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, com.fasterxml.jackson.databind.JsonSerializer<?> serializer) Configure a custom serializer for the given type.serializers(com.fasterxml.jackson.databind.JsonSerializer<?>... serializers) Configure custom serializers.serializersByType(Map<Class<?>, com.fasterxml.jackson.databind.JsonSerializer<?>> serializers) Configure custom serializers for the given types.simpleDateFormat(String format) Define the date/time format with aSimpleDateFormat.static Jackson2ObjectMapperBuildersmile()Obtain aJackson2ObjectMapperBuilderinstance in order to build a Smile data formatObjectMapperinstance.Override the defaultTimeZoneto use for formatting.Override the defaultTimeZoneto 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 Jackson2ObjectMapperBuilderxml()Obtain aJackson2ObjectMapperBuilderinstance in order to build anXmlMapperinstance.static Jackson2ObjectMapperBuilderyaml()Obtain aJackson2ObjectMapperBuilderinstance in order to build a YAML data formatObjectMapperinstance.
-
Constructor Details
-
Jackson2ObjectMapperBuilder
public Jackson2ObjectMapperBuilder()
-
-
Method Details
-
createXmlMapper
If set totrue, anXmlMapperwill be created using its default constructor. This is only applicable tobuild()calls, not toconfigure(com.fasterxml.jackson.databind.ObjectMapper)calls. -
factory
Define theJsonFactoryto be used to create theObjectMapperinstance.- Since:
- 5.0
-
dateFormat
Define the format for date/time with the givenDateFormat.Note: Setting this property makes the exposed
ObjectMappernon-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
ObjectMappernon-thread-safe, according to Jackson's thread safety rules.- See Also:
-
locale
Override the defaultLocaleto use for formatting.Default value used is
Locale.getDefault().- Since:
- 4.1.5
-
locale
Override the defaultLocaleto use for formatting.Default value used is
Locale.getDefault().- Parameters:
localeString- the locale ID as a String representation- Since:
- 4.1.5
-
timeZone
Override the defaultTimeZoneto use for formatting.Default value used is UTC (NOT local timezone).
- Since:
- 4.1.5
-
timeZone
Override the defaultTimeZoneto 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(com.fasterxml.jackson.databind.AnnotationIntrospector annotationIntrospector) Set anAnnotationIntrospectorfor both serialization and deserialization. -
annotationIntrospector
public Jackson2ObjectMapperBuilder annotationIntrospector(Function<@Nullable com.fasterxml.jackson.databind.AnnotationIntrospector, @Nullable com.fasterxml.jackson.databind.AnnotationIntrospector> pairingFunction) Alternative toannotationIntrospector(AnnotationIntrospector)that allows combining with rather than replacing the currently set introspector, for example, 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(com.fasterxml.jackson.databind.PropertyNamingStrategy propertyNamingStrategy) Specify aPropertyNamingStrategyto configure theObjectMapperwith. -
defaultTyping
public Jackson2ObjectMapperBuilder defaultTyping(com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> typeResolverBuilder) Specify aTypeResolverBuilderto 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
public Jackson2ObjectMapperBuilder filters(com.fasterxml.jackson.databind.ser.FilterProvider filters) Set the global filters to use in order to support@JsonFilterannotated 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:
-
ObjectMapper.addMixIn(Class, Class)
-
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:
-
ObjectMapper.addMixIn(Class, Class)
-
serializers
public Jackson2ObjectMapperBuilder serializers(com.fasterxml.jackson.databind.JsonSerializer<?>... serializers) Configure custom serializers. Each serializer is registered for the type returned byJsonSerializer.handledType(), which must not benull.- See Also:
-
serializerByType
public Jackson2ObjectMapperBuilder serializerByType(Class<?> type, com.fasterxml.jackson.databind.JsonSerializer<?> serializer) Configure a custom serializer for the given type.- Since:
- 4.1.2
- See Also:
-
serializersByType
public Jackson2ObjectMapperBuilder serializersByType(Map<Class<?>, com.fasterxml.jackson.databind.JsonSerializer<?>> serializers) Configure custom serializers for the given types.- See Also:
-
deserializers
public Jackson2ObjectMapperBuilder deserializers(com.fasterxml.jackson.databind.JsonDeserializer<?>... 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, com.fasterxml.jackson.databind.JsonDeserializer<?> deserializer) Configure a custom deserializer for the given type.- Since:
- 4.1.2
-
deserializersByType
public Jackson2ObjectMapperBuilder deserializersByType(Map<Class<?>, com.fasterxml.jackson.databind.JsonDeserializer<?>> deserializers) Configure custom deserializers for the given types. -
autoDetectFields
Shortcut forMapperFeature.AUTO_DETECT_FIELDSoption. -
autoDetectGettersSetters
Shortcut forMapperFeature.AUTO_DETECT_SETTERS/MapperFeature.AUTO_DETECT_GETTERS/MapperFeature.AUTO_DETECT_IS_GETTERSoptions. -
defaultViewInclusion
Shortcut forMapperFeature.DEFAULT_VIEW_INCLUSIONoption. -
failOnUnknownProperties
Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESoption. -
failOnEmptyBeans
Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANSoption. -
indentOutput
Shortcut forSerializationFeature.INDENT_OUTPUToption. -
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:
-
PropertyAccessorJsonAutoDetect.Visibility
-
featuresToEnable
Specify features to enable.- See Also:
-
JsonParser.FeatureJsonGenerator.FeatureSerializationFeatureDeserializationFeatureMapperFeature
-
featuresToDisable
Specify features to disable.- See Also:
-
JsonParser.FeatureJsonGenerator.FeatureSerializationFeatureDeserializationFeatureMapperFeature
-
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, autodetection of modules will not occur — 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(List)Module
-
modules
Variant ofmodules(Module...)with aList.- See Also:
-
modules
public Jackson2ObjectMapperBuilder modules(Consumer<List<com.fasterxml.jackson.databind.Module>> consumer) Variant ofmodules(Module...)with aConsumerfor full control over the underlying list of modules.- Since:
- 5.3.22
- See Also:
-
modules(Module...)modules(List)Module
-
modulesToInstall
public Jackson2ObjectMapperBuilder modulesToInstall(com.fasterxml.jackson.databind.Module... modules) 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, 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
public Jackson2ObjectMapperBuilder modulesToInstall(Consumer<List<com.fasterxml.jackson.databind.Module>> consumer) Variant ofmodulesToInstall(Module...)with aConsumerfor full control over the underlying list of modules.- Since:
- 5.3.22
- See Also:
-
modulesToInstall
@SafeVarargs public final Jackson2ObjectMapperBuilder modulesToInstall(Class<? extends com.fasterxml.jackson.databind.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, or Jackson's finding of modules (see
findModulesViaServiceLoader), allowing to eventually override their configuration.Specify either this or
modules(Module...), not both.- See Also:
-
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 support module on the classpath.
- See Also:
-
ObjectMapper.findModules()
-
moduleClassLoader
Set the ClassLoader to use for loading Jackson extension modules. -
handlerInstantiator
public Jackson2ObjectMapperBuilder handlerInstantiator(com.fasterxml.jackson.databind.cfg.HandlerInstantiator handlerInstantiator) Customize the construction of Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).- Since:
- 4.1.3
- See Also:
-
applicationContext
Set the SpringApplicationContextin order to autowire Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).- Since:
- 4.1.3
- See Also:
-
postConfigurer
public Jackson2ObjectMapperBuilder postConfigurer(Consumer<com.fasterxml.jackson.databind.ObjectMapper> configurer) An option to apply additional customizations directly to theObjectMapperinstances 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
public <T extends com.fasterxml.jackson.databind.ObjectMapper> T build()Build a newObjectMapperinstance.Each build operation produces an independent
ObjectMapperinstance. The builder's settings can get modified, with a subsequent build operation then producing a newObjectMapperbased on the most recent settings.- Returns:
- the newly built ObjectMapper
-
configure
public void configure(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Configure an existingObjectMapperinstance with this builder's settings. This can be applied to any number ofObjectMappers.- Parameters:
objectMapper- the ObjectMapper to configure
-
json
Obtain aJackson2ObjectMapperBuilderinstance in order to build a regular JSONObjectMapperinstance. -
xml
Obtain aJackson2ObjectMapperBuilderinstance in order to build anXmlMapperinstance. -
smile
Obtain aJackson2ObjectMapperBuilderinstance in order to build a Smile data formatObjectMapperinstance.- Since:
- 5.0
-
cbor
Obtain aJackson2ObjectMapperBuilderinstance in order to build a CBOR data formatObjectMapperinstance.- Since:
- 5.0
-
yaml
Obtain aJackson2ObjectMapperBuilderinstance in order to build a YAML data formatObjectMapperinstance.- Since:
- 6.2
-