Class Jackson2ObjectMapperBuilder

java.lang.Object
org.springframework.http.converter.json.Jackson2ObjectMapperBuilder

public class Jackson2ObjectMapperBuilder extends Object
A builder used to create ObjectMapper instances with a fluent API.

It customizes Jackson's default properties with the following ones:

  • MapperFeature.DEFAULT_VIEW_INCLUSION is disabled
  • DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES is disabled

It also automatically registers the following well-known modules if they are detected on the classpath:

Since:
4.1.1
Author:
Sebastien Deleuze, Juergen Hoeller, Tadaya Tsuyukubo, EddĂș MelĂ©ndez, Hyoungjune Kim
See Also:
  • Constructor Details

    • Jackson2ObjectMapperBuilder

      public Jackson2ObjectMapperBuilder()
  • Method Details

    • createXmlMapper

      public Jackson2ObjectMapperBuilder createXmlMapper(boolean createXmlMapper)
      If set to true, an XmlMapper will be created using its default constructor. This is only applicable to build() calls, not to configure(com.fasterxml.jackson.databind.ObjectMapper) calls.
    • factory

      public Jackson2ObjectMapperBuilder factory(com.fasterxml.jackson.core.JsonFactory factory)
      Define the JsonFactory to be used to create the ObjectMapper instance.
      Since:
      5.0
    • dateFormat

      public Jackson2ObjectMapperBuilder dateFormat(DateFormat dateFormat)
      Define the format for date/time with the given DateFormat.

      Note: Setting this property makes the exposed ObjectMapper non-thread-safe, according to Jackson's thread safety rules.

      See Also:
    • simpleDateFormat

      public Jackson2ObjectMapperBuilder simpleDateFormat(String format)
      Define the date/time format with a SimpleDateFormat.

      Note: Setting this property makes the exposed ObjectMapper non-thread-safe, according to Jackson's thread safety rules.

      See Also:
    • locale

      public Jackson2ObjectMapperBuilder locale(Locale locale)
      Override the default Locale to use for formatting.

      Default value used is Locale.getDefault().

      Since:
      4.1.5
    • locale

      public Jackson2ObjectMapperBuilder locale(String localeString)
      Override the default Locale to use for formatting.

      Default value used is Locale.getDefault().

      Parameters:
      localeString - the locale ID as a String representation
      Since:
      4.1.5
    • timeZone

      public Jackson2ObjectMapperBuilder timeZone(TimeZone timeZone)
      Override the default TimeZone to use for formatting.

      Default value used is UTC (NOT local timezone).

      Since:
      4.1.5
    • timeZone

      public Jackson2ObjectMapperBuilder timeZone(String timeZoneString)
      Override the default TimeZone 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(com.fasterxml.jackson.databind.AnnotationIntrospector annotationIntrospector)
      Set an AnnotationIntrospector for both serialization and deserialization.
    • annotationIntrospector

      public Jackson2ObjectMapperBuilder annotationIntrospector(Function<@Nullable com.fasterxml.jackson.databind.AnnotationIntrospector,@Nullable com.fasterxml.jackson.databind.AnnotationIntrospector> pairingFunction)
      Alternative to annotationIntrospector(AnnotationIntrospector) that allows combining with rather than replacing the currently set introspector, for example, via AnnotationIntrospector.pair(AnnotationIntrospector, AnnotationIntrospector).
      Parameters:
      pairingFunction - a function to apply to the currently set introspector (possibly null); the result of the function becomes the new introspector.
      Since:
      5.2.4
    • propertyNamingStrategy

      public Jackson2ObjectMapperBuilder propertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategy propertyNamingStrategy)
      Specify a PropertyNamingStrategy to configure the ObjectMapper with.
    • defaultTyping

      public Jackson2ObjectMapperBuilder defaultTyping(com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> typeResolverBuilder)
      Specify a TypeResolverBuilder 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

      public Jackson2ObjectMapperBuilder filters(com.fasterxml.jackson.databind.ser.FilterProvider filters)
      Set the global filters to use in order to support @JsonFilter annotated POJO.
      Since:
      4.2
      See Also:
    • mixIn

      public Jackson2ObjectMapperBuilder mixIn(Class<?> target, Class<?> mixinSource)
      Add mix-in annotations to use for augmenting specified class or interface.
      Parameters:
      target - class (or interface) whose annotations to effectively override
      mixinSource - 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

      public Jackson2ObjectMapperBuilder mixIns(Map<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 by JsonSerializer.handledType(), which must not be null.
      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 by JsonDeserializer.handledType(), which must not be null.
      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

      public Jackson2ObjectMapperBuilder autoDetectFields(boolean autoDetectFields)
      Shortcut for MapperFeature.AUTO_DETECT_FIELDS option.
    • autoDetectGettersSetters

      public Jackson2ObjectMapperBuilder autoDetectGettersSetters(boolean autoDetectGettersSetters)
      Shortcut for MapperFeature.AUTO_DETECT_SETTERS/ MapperFeature.AUTO_DETECT_GETTERS/MapperFeature.AUTO_DETECT_IS_GETTERS options.
    • defaultViewInclusion

      public Jackson2ObjectMapperBuilder defaultViewInclusion(boolean defaultViewInclusion)
      Shortcut for MapperFeature.DEFAULT_VIEW_INCLUSION option.
    • failOnUnknownProperties

      public Jackson2ObjectMapperBuilder failOnUnknownProperties(boolean failOnUnknownProperties)
      Shortcut for DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES option.
    • failOnEmptyBeans

      public Jackson2ObjectMapperBuilder failOnEmptyBeans(boolean failOnEmptyBeans)
      Shortcut for SerializationFeature.FAIL_ON_EMPTY_BEANS option.
    • indentOutput

      public Jackson2ObjectMapperBuilder indentOutput(boolean indentOutput)
      Shortcut for SerializationFeature.INDENT_OUTPUT option.
    • defaultUseWrapper

      public Jackson2ObjectMapperBuilder defaultUseWrapper(boolean defaultUseWrapper)
      Define if a wrapper will be used for indexed (List, array) properties or not by default (only applies to XmlMapper).
      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

      public Jackson2ObjectMapperBuilder featuresToEnable(Object... featuresToEnable)
      Specify features to enable.
      See Also:
      • JsonParser.Feature
      • JsonGenerator.Feature
      • SerializationFeature
      • DeserializationFeature
      • MapperFeature
    • featuresToDisable

      public Jackson2ObjectMapperBuilder featuresToDisable(Object... featuresToDisable)
      Specify features to disable.
      See Also:
      • JsonParser.Feature
      • JsonGenerator.Feature
      • SerializationFeature
      • DeserializationFeature
      • MapperFeature
    • modules

      public Jackson2ObjectMapperBuilder modules(com.fasterxml.jackson.databind.Module... modules)
      Specify the modules to be registered with the ObjectMapper.

      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

      public Jackson2ObjectMapperBuilder modules(List<com.fasterxml.jackson.databind.Module> modules)
      Variant of modules(Module...) with a List.
      See Also:
    • modules

      public Jackson2ObjectMapperBuilder modules(Consumer<List<com.fasterxml.jackson.databind.Module>> consumer)
      Variant of modules(Module...) with a Consumer for full control over the underlying list of modules.
      Since:
      5.3.22
      See Also:
    • modulesToInstall

      public Jackson2ObjectMapperBuilder modulesToInstall(com.fasterxml.jackson.databind.Module... modules)
      Specify one or more modules to be registered with the ObjectMapper.

      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 of modulesToInstall(Module...) with a Consumer for 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 the ObjectMapper.

      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

      public Jackson2ObjectMapperBuilder findModulesViaServiceLoader(boolean findModules)
      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

      public Jackson2ObjectMapperBuilder moduleClassLoader(ClassLoader 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, TypeResolverBuilder and TypeIdResolver).
      Since:
      4.1.3
      See Also:
    • applicationContext

      public Jackson2ObjectMapperBuilder applicationContext(ApplicationContext applicationContext)
      Set the Spring ApplicationContext in order to autowire Jackson handlers (JsonSerializer, JsonDeserializer, KeyDeserializer, TypeResolverBuilder and TypeIdResolver).
      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 the ObjectMapper 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

      public <T extends com.fasterxml.jackson.databind.ObjectMapper> T build()
      Build a new ObjectMapper instance.

      Each build operation produces an independent ObjectMapper instance. The builder's settings can get modified, with a subsequent build operation then producing a new ObjectMapper based on the most recent settings.

      Returns:
      the newly built ObjectMapper
    • configure

      public void configure(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
      Configure an existing ObjectMapper instance with this builder's settings. This can be applied to any number of ObjectMappers.
      Parameters:
      objectMapper - the ObjectMapper to configure
    • json

      public static Jackson2ObjectMapperBuilder json()
      Obtain a Jackson2ObjectMapperBuilder instance in order to build a regular JSON ObjectMapper instance.
    • xml

      public static Jackson2ObjectMapperBuilder xml()
      Obtain a Jackson2ObjectMapperBuilder instance in order to build an XmlMapper instance.
    • smile

      public static Jackson2ObjectMapperBuilder smile()
      Obtain a Jackson2ObjectMapperBuilder instance in order to build a Smile data format ObjectMapper instance.
      Since:
      5.0
    • cbor

      public static Jackson2ObjectMapperBuilder cbor()
      Obtain a Jackson2ObjectMapperBuilder instance in order to build a CBOR data format ObjectMapper instance.
      Since:
      5.0
    • yaml

      public static Jackson2ObjectMapperBuilder yaml()
      Obtain a Jackson2ObjectMapperBuilder instance in order to build a YAML data format ObjectMapper instance.
      Since:
      6.2