Class AbstractJackson2HttpMessageConverter
- All Implemented Interfaces:
GenericHttpMessageConverter<Object>
,HttpMessageConverter<Object>
- Direct Known Subclasses:
MappingJackson2CborHttpMessageConverter
,MappingJackson2HttpMessageConverter
,MappingJackson2SmileHttpMessageConverter
,MappingJackson2XmlHttpMessageConverter
,MappingJackson2YamlHttpMessageConverter
HttpMessageConverter
implementations.- Since:
- 4.1
- Author:
- Arjen Poutsma, Keith Donald, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze, Sam Brannen
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected com.fasterxml.jackson.databind.ObjectMapper
Deprecated, for removal: This API element is subject to removal in a future version.Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractJackson2HttpMessageConverter
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Deprecated, for removal: This API element is subject to removal in a future version.protected
AbstractJackson2HttpMessageConverter
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType supportedMediaType) Deprecated, for removal: This API element is subject to removal in a future version.protected
AbstractJackson2HttpMessageConverter
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType... supportedMediaTypes) Deprecated, for removal: This API element is subject to removal in a future version. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Deprecated, for removal: This API element is subject to removal in a future version.This implementation checks if the given class is supported, and if the supported media types include the given media type.boolean
Deprecated, for removal: This API element is subject to removal in a future version.Indicates whether the given type can be read by this converter.boolean
Deprecated, for removal: This API element is subject to removal in a future version.protected com.fasterxml.jackson.databind.ObjectReader
customizeReader
(com.fasterxml.jackson.databind.ObjectReader reader, com.fasterxml.jackson.databind.JavaType javaType) Deprecated, for removal: This API element is subject to removal in a future version.Subclasses can use this method to customizeObjectReader
used for reading values.protected com.fasterxml.jackson.databind.ObjectWriter
customizeWriter
(com.fasterxml.jackson.databind.ObjectWriter writer, @Nullable com.fasterxml.jackson.databind.JavaType javaType, @Nullable MediaType contentType) Deprecated, for removal: This API element is subject to removal in a future version.Subclasses can use this method to customizeObjectWriter
used for writing values.protected Charset
getCharset
(@Nullable MediaType contentType) Deprecated, for removal: This API element is subject to removal in a future version.Determine the charset to use for JSON input.getContentLength
(Object object, @Nullable MediaType contentType) Deprecated, for removal: This API element is subject to removal in a future version.Returns the content length for the given type.getDefaultContentType
(Object object) Deprecated, for removal: This API element is subject to removal in a future version.Returns the default content type for the given type.protected com.fasterxml.jackson.databind.JavaType
getJavaType
(Type type, @Nullable Class<?> contextClass) Deprecated, for removal: This API element is subject to removal in a future version.Return the JacksonJavaType
for the specified type and context class.protected com.fasterxml.jackson.core.JsonEncoding
getJsonEncoding
(@Nullable MediaType contentType) Deprecated, for removal: This API element is subject to removal in a future version.Determine the JSON encoding to use for the given content type.Deprecated, for removal: This API element is subject to removal in a future version.Return the supported media type(s) forProblemDetail
.com.fasterxml.jackson.databind.ObjectMapper
Deprecated, for removal: This API element is subject to removal in a future version.Return the mainObjectMapper
in use.getObjectMappersForType
(Class<?> clazz) Deprecated, for removal: This API element is subject to removal in a future version.Return ObjectMapper registrations for the given class, if any.getSupportedMediaTypes
(Class<?> clazz) Deprecated, for removal: This API element is subject to removal in a future version.Return the list of media types supported by this converter for the given class.protected void
logWarningIfNecessary
(Type type, @Nullable Throwable cause) Deprecated, for removal: This API element is subject to removal in a future version.Determine whether to log the given exception coming from aObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType)
/ObjectMapper.canSerialize(java.lang.Class<?>)
check.read
(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) Deprecated, for removal: This API element is subject to removal in a future version.Read an object of the given type from the given input message, and returns it.protected Object
readInternal
(Class<?> clazz, HttpInputMessage inputMessage) Deprecated, for removal: This API element is subject to removal in a future version.Abstract template method that reads the actual object.void
registerObjectMappersForType
(Class<?> clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>> registrar) Deprecated, for removal: This API element is subject to removal in a future version.Configure theObjectMapper
instances to use for the givenClass
.void
setObjectMapper
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Deprecated, for removal: This API element is subject to removal in a future version.Configure the mainObjectMapper
to use for Object conversion.void
setPrettyPrint
(boolean prettyPrint) Deprecated, for removal: This API element is subject to removal in a future version.Whether to use theDefaultPrettyPrinter
when writing JSON.void
setSupportedMediaTypes
(List<MediaType> supportedMediaTypes) Deprecated, for removal: This API element is subject to removal in a future version.Set the list ofMediaType
objects supported by this converter.protected boolean
Deprecated, for removal: This API element is subject to removal in a future version.Indicates whether this message converter can write the given object multiple times.protected void
writeInternal
(Object object, @Nullable Type type, HttpOutputMessage outputMessage) Deprecated, for removal: This API element is subject to removal in a future version.Abstract template method that writes the actual body.protected void
writePrefix
(com.fasterxml.jackson.core.JsonGenerator generator, Object object) Deprecated, for removal: This API element is subject to removal in a future version.Write a prefix before the main content.protected void
writeSuffix
(com.fasterxml.jackson.core.JsonGenerator generator, Object object) Deprecated, for removal: This API element is subject to removal in a future version.Write a suffix after the main content.Methods inherited from class org.springframework.http.converter.AbstractGenericHttpMessageConverter
canWrite, supports, write, writeInternal
Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canWrite, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, write
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes, read, write
-
Field Details
-
defaultObjectMapper
protected com.fasterxml.jackson.databind.ObjectMapper defaultObjectMapperDeprecated, for removal: This API element is subject to removal in a future version.
-
-
Constructor Details
-
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Deprecated, for removal: This API element is subject to removal in a future version. -
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType supportedMediaType) Deprecated, for removal: This API element is subject to removal in a future version. -
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType... supportedMediaTypes) Deprecated, for removal: This API element is subject to removal in a future version.
-
-
Method Details
-
setSupportedMediaTypes
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
Set the list ofMediaType
objects supported by this converter.- Overrides:
setSupportedMediaTypes
in classAbstractHttpMessageConverter<Object>
-
setObjectMapper
public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Deprecated, for removal: This API element is subject to removal in a future version.Configure the mainObjectMapper
to use for Object conversion. If not set, a defaultObjectMapper
instance is created.Setting a custom-configured
ObjectMapper
is one way to take further control of the JSON serialization process. For example, an extendedSerializerFactory
can be configured that provides custom serializers for specific types. Another 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.- See Also:
-
getObjectMapper
public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()Deprecated, for removal: This API element is subject to removal in a future version.Return the mainObjectMapper
in use. -
registerObjectMappersForType
public void registerObjectMappersForType(Class<?> clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>> registrar) Deprecated, for removal: This API element is subject to removal in a future version.Configure theObjectMapper
instances to use for the givenClass
. This is useful when you want to deviate from thedefault
ObjectMapper or have theObjectMapper
vary byMediaType
.Note: Use of this method effectively turns off use of the default
ObjectMapper
andsupportedMediaTypes
for the given class. Therefore it is important for the mappings configured here toinclude
every MediaType that must be supported for the given class.- Parameters:
clazz
- the type of Object to register ObjectMapper instances forregistrar
- a consumer to populate or otherwise update the MediaType-to-ObjectMapper associations for the given Class- Since:
- 5.3.4
-
getObjectMappersForType
public Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper> getObjectMappersForType(Class<?> clazz) Deprecated, for removal: This API element is subject to removal in a future version.Return ObjectMapper registrations for the given class, if any.- Parameters:
clazz
- the class to look up for registrations for- Returns:
- a map with registered MediaType-to-ObjectMapper registrations, or empty if in case of no registrations for the given class.
- Since:
- 5.3.4
-
getSupportedMediaTypes
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from interface:HttpMessageConverter
Return the list of media types supported by this converter for the given class. The list may differ fromHttpMessageConverter.getSupportedMediaTypes()
if the converter does not support the given Class or if it supports it only for a subset of media types.- Parameters:
clazz
- the type of class to check- Returns:
- the list of media types supported for the given class
-
getMediaTypesForProblemDetail
Deprecated, for removal: This API element is subject to removal in a future version.Return the supported media type(s) forProblemDetail
. By default, an empty list, unless overridden in subclasses.- Since:
- 6.0.5
-
setPrettyPrint
public void setPrettyPrint(boolean prettyPrint) Deprecated, for removal: This API element is subject to removal in a future version.Whether to use theDefaultPrettyPrinter
when writing JSON. This is a shortcut for setting up anObjectMapper
as follows:ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); converter.setObjectMapper(mapper);
-
canRead
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
This implementation checks if the given class is supported, and if the supported media types include the given media type.- Specified by:
canRead
in interfaceHttpMessageConverter<Object>
- Overrides:
canRead
in classAbstractHttpMessageConverter<Object>
- Parameters:
clazz
- the class to test for readabilitymediaType
- the media type to read (can benull
if not specified); typically the value of aContent-Type
header.- Returns:
true
if readable;false
otherwise
-
canRead
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from interface:GenericHttpMessageConverter
Indicates whether the given type can be read by this converter. This method should perform the same checks asHttpMessageConverter.canRead(Class, MediaType)
with additional ones related to the generic type.- Specified by:
canRead
in interfaceGenericHttpMessageConverter<Object>
- Overrides:
canRead
in classAbstractGenericHttpMessageConverter<Object>
- Parameters:
type
- the (potentially generic) type to test for readabilitycontextClass
- a context class for the target type, for example a class in which the target type appears in a method signature (can benull
)mediaType
- the media type to read, can benull
if not specified. Typically, the value of aContent-Type
header.- Returns:
true
if readable;false
otherwise
-
canWrite
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
This implementation checks if the given class is supported, and if the supported media types include the given media type.- Specified by:
canWrite
in interfaceHttpMessageConverter<Object>
- Overrides:
canWrite
in classAbstractHttpMessageConverter<Object>
- Parameters:
clazz
- the class to test for writabilitymediaType
- the media type to write (can benull
if not specified); typically the value of anAccept
header.- Returns:
true
if writable;false
otherwise
-
logWarningIfNecessary
Deprecated, for removal: This API element is subject to removal in a future version.Determine whether to log the given exception coming from aObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType)
/ObjectMapper.canSerialize(java.lang.Class<?>)
check.- Parameters:
type
- the class that Jackson tested for (de-)serializabilitycause
- the Jackson-thrown exception to evaluate (typically aJsonMappingException
)- Since:
- 4.3
-
read
public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Deprecated, for removal: This API element is subject to removal in a future version.Description copied from interface:GenericHttpMessageConverter
Read an object of the given type from the given input message, and returns it.- Parameters:
type
- the (potentially generic) type of object to return. This type must have previously been passed to thecanRead
method of this interface, which must have returnedtrue
.contextClass
- a context class for the target type, for example a class in which the target type appears in a method signature (can benull
)inputMessage
- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
-
readInternal
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
Abstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.- Specified by:
readInternal
in classAbstractHttpMessageConverter<Object>
- Parameters:
clazz
- the type of object to returninputMessage
- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
-
customizeReader
protected com.fasterxml.jackson.databind.ObjectReader customizeReader(com.fasterxml.jackson.databind.ObjectReader reader, com.fasterxml.jackson.databind.JavaType javaType) Deprecated, for removal: This API element is subject to removal in a future version.Subclasses can use this method to customizeObjectReader
used for reading values.- Parameters:
reader
- the reader instance to customizejavaType
- the target type of element values to read to- Returns:
- the customized
ObjectReader
- Since:
- 6.0
-
getCharset
Deprecated, for removal: This API element is subject to removal in a future version.Determine the charset to use for JSON input.By default this is either the charset from the input
MediaType
or otherwise falling back onUTF-8
. Can be overridden in subclasses.- Parameters:
contentType
- the content type of the HTTP input message- Returns:
- the charset to use
- Since:
- 5.1.18
-
writeInternal
protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractGenericHttpMessageConverter
Abstract template method that writes the actual body. Invoked fromAbstractGenericHttpMessageConverter.write(T, java.lang.reflect.Type, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
.- Specified by:
writeInternal
in classAbstractGenericHttpMessageConverter<Object>
- Parameters:
object
- the object to write to the output messagetype
- the type of object to write (may benull
)outputMessage
- the HTTP output message to write to- Throws:
IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errors
-
customizeWriter
protected com.fasterxml.jackson.databind.ObjectWriter customizeWriter(com.fasterxml.jackson.databind.ObjectWriter writer, @Nullable com.fasterxml.jackson.databind.JavaType javaType, @Nullable MediaType contentType) Deprecated, for removal: This API element is subject to removal in a future version.Subclasses can use this method to customizeObjectWriter
used for writing values.- Parameters:
writer
- the writer instance to customizejavaType
- the type of element values to writecontentType
- the selected media type- Returns:
- the customized
ObjectWriter
- Since:
- 6.0
-
writePrefix
protected void writePrefix(com.fasterxml.jackson.core.JsonGenerator generator, Object object) throws IOException Deprecated, for removal: This API element is subject to removal in a future version.Write a prefix before the main content.- Parameters:
generator
- the generator to use for writing content.object
- the object to write to the output message.- Throws:
IOException
-
writeSuffix
protected void writeSuffix(com.fasterxml.jackson.core.JsonGenerator generator, Object object) throws IOException Deprecated, for removal: This API element is subject to removal in a future version.Write a suffix after the main content.- Parameters:
generator
- the generator to use for writing content.object
- the object to write to the output message.- Throws:
IOException
-
getJavaType
protected com.fasterxml.jackson.databind.JavaType getJavaType(Type type, @Nullable Class<?> contextClass) Deprecated, for removal: This API element is subject to removal in a future version.Return the JacksonJavaType
for the specified type and context class.- Parameters:
type
- the generic type to return the Jackson JavaType forcontextClass
- a context class for the target type, for example a class in which the target type appears in a method signature (can benull
)- Returns:
- the Jackson JavaType
-
getJsonEncoding
Deprecated, for removal: This API element is subject to removal in a future version.Determine the JSON encoding to use for the given content type.- Parameters:
contentType
- the media type as requested by the caller- Returns:
- the JSON encoding to use (never
null
)
-
getDefaultContentType
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
Returns the default content type for the given type. Called whenAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
is invoked without a specified content type parameter.By default, this returns the first element of the
supportedMediaTypes
property, if any. Can be overridden in subclasses.- Overrides:
getDefaultContentType
in classAbstractHttpMessageConverter<Object>
- Parameters:
object
- the type to return the content type for- Returns:
- the content type, or
null
if not known - Throws:
IOException
-
getContentLength
protected @Nullable Long getContentLength(Object object, @Nullable MediaType contentType) throws IOException Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
Returns the content length for the given type.By default, this returns
null
, meaning that the content length is unknown. Can be overridden in subclasses.- Overrides:
getContentLength
in classAbstractHttpMessageConverter<Object>
- Parameters:
object
- the type to return the content length for- Returns:
- the content length, or
null
if not known - Throws:
IOException
-
supportsRepeatableWrites
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractHttpMessageConverter
Indicates whether this message converter can write the given object multiple times.The default implementation returns
false
.- Overrides:
supportsRepeatableWrites
in classAbstractHttpMessageConverter<Object>
- Parameters:
o
- the object t- Returns:
true
ift
can be written repeatedly;false
otherwise
-
AbstractJacksonHttpMessageConverter