类 AbstractJackson2HttpMessageConverter
- java.lang.Object
- org.springframework.http.converter.AbstractHttpMessageConverter<T>
- org.springframework.http.converter.AbstractGenericHttpMessageConverter<Object>
- org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter
- 所有已实现的接口:
GenericHttpMessageConverter<Object>
,HttpMessageConverter<Object>
- 直接已知子类:
MappingJackson2CborHttpMessageConverter
,MappingJackson2HttpMessageConverter
,MappingJackson2SmileHttpMessageConverter
,MappingJackson2XmlHttpMessageConverter
public abstract class AbstractJackson2HttpMessageConverter extends AbstractGenericHttpMessageConverter<Object>
Abstract base class for Jackson based and content type independentHttpMessageConverter
implementations.Compatible with Jackson 2.9 and higher, as of Spring 5.0.
- 从以下版本开始:
- 4.1
- 作者:
- Arjen Poutsma, Keith Donald, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
- 另请参阅:
MappingJackson2HttpMessageConverter
字段概要
字段 修饰符和类型 字段 说明 static Charset
DEFAULT_CHARSET
已过时。protected ObjectMapper
objectMapper
从类继承的字段 org.springframework.http.converter.AbstractHttpMessageConverter
logger
构造器概要
构造器 限定符 构造器 说明 protected
AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper)
protected
AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType)
protected
AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes)
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 boolean
canRead(Class<?> clazz, MediaType mediaType)
This implementation checks if the given class is supported, and if the supported media typesinclude the given media type.boolean
canRead(Type type, Class<?> contextClass, MediaType mediaType)
Indicates whether the given type can be read by this converter.boolean
canWrite(Class<?> clazz, MediaType mediaType)
protected Charset
getCharset(MediaType contentType)
Determine the charset to use for JSON input.protected Long
getContentLength(Object object, MediaType contentType)
Returns the content length for the given type.protected MediaType
getDefaultContentType(Object object)
Returns the default content type for the given type.protected JavaType
getJavaType(Type type, Class<?> contextClass)
Return the JacksonJavaType
for the specified type and context class.protected JsonEncoding
getJsonEncoding(MediaType contentType)
Determine the JSON encoding to use for the given content type.ObjectMapper
getObjectMapper()
Return the underlyingObjectMapper
for this view.protected void
logWarningIfNecessary(Type type, Throwable cause)
Determine whether to log the given exception coming from aObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType)
/ObjectMapper.canSerialize(java.lang.Class<?>)
check.Object
read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
Read an object of the given type form the given input message, and returns it.protected Object
readInternal(Class<?> clazz, HttpInputMessage inputMessage)
Abstract template method that reads the actual object.void
setObjectMapper(ObjectMapper objectMapper)
Set theObjectMapper
for this view.void
setPrettyPrint(boolean prettyPrint)
Whether to use theDefaultPrettyPrinter
when writing JSON.protected void
writeInternal(Object object, Type type, HttpOutputMessage outputMessage)
Abstract template method that writes the actual body.protected void
writePrefix(JsonGenerator generator, Object object)
Write a prefix before the main content.protected void
writeSuffix(JsonGenerator generator, Object object)
Write a suffix after the main content.从类继承的方法 org.springframework.http.converter.AbstractGenericHttpMessageConverter
canWrite, supports, write, writeInternal
从类继承的方法 org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canWrite, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes, read, write
字段详细资料
DEFAULT_CHARSET
@Nullable @Deprecated public static final Charset DEFAULT_CHARSET
已过时。The default charset used by the converter.
objectMapper
protected ObjectMapper objectMapper
构造器详细资料
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper)
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType)
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes)
方法详细资料
setObjectMapper
public void setObjectMapper(ObjectMapper objectMapper)
Set theObjectMapper
for this view. If not set, a defaultObjectMapper
is used.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. The other 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.
getObjectMapper
public ObjectMapper getObjectMapper()
Return the underlyingObjectMapper
for this view.
setPrettyPrint
public void setPrettyPrint(boolean prettyPrint)
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
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType)
从类复制的说明:AbstractHttpMessageConverter
This implementation checks if the given class is supported, and if the supported media typesinclude the given media type.- 指定者:
canRead
在接口中HttpMessageConverter<Object>
- 覆盖:
canRead
在类中AbstractHttpMessageConverter<Object>
- 参数:
clazz
- the class to test for readabilitymediaType
- the media type to read (can benull
if not specified); typically the value of aContent-Type
header.- 返回:
true
if readable;false
otherwise
canRead
public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType)
从接口复制的说明:GenericHttpMessageConverter
Indicates whether the given type can be read by this converter. This method should perform the same checks thanHttpMessageConverter.canRead(Class, MediaType)
with additional ones related to the generic type.- 指定者:
canRead
在接口中GenericHttpMessageConverter<Object>
- 覆盖:
canRead
在类中AbstractGenericHttpMessageConverter<Object>
- 参数:
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.- 返回:
true
if readable;false
otherwise
canWrite
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType)
从类复制的说明:AbstractHttpMessageConverter
This implementation checks if the given class is supported, and if the supported media types include the given media type.- 指定者:
canWrite
在接口中HttpMessageConverter<Object>
- 覆盖:
canWrite
在类中AbstractHttpMessageConverter<Object>
- 参数:
clazz
- the class to test for writabilitymediaType
- the media type to write (can benull
if not specified); typically the value of anAccept
header.- 返回:
true
if writable;false
otherwise
logWarningIfNecessary
protected void logWarningIfNecessary(Type type, @Nullable Throwable cause)
Determine whether to log the given exception coming from aObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType)
/ObjectMapper.canSerialize(java.lang.Class<?>)
check.- 参数:
type
- the class that Jackson tested for (de-)serializabilitycause
- the Jackson-thrown exception to evaluate (typically aJsonMappingException
)- 从以下版本开始:
- 4.3
read
public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
从接口复制的说明:GenericHttpMessageConverter
Read an object of the given type form the given input message, and returns it.- 参数:
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- 返回:
- the converted object
- 抛出:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
readInternal
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
从类复制的说明:AbstractHttpMessageConverter
Abstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.- 指定者:
readInternal
在类中AbstractHttpMessageConverter<Object>
- 参数:
clazz
- the type of object to returninputMessage
- the HTTP input message to read from- 返回:
- the converted object
- 抛出:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
getCharset
protected Charset getCharset(@Nullable MediaType contentType)
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.- 参数:
contentType
- the content type of the HTTP input message- 返回:
- the charset to use
- 从以下版本开始:
- 5.1.18
writeInternal
protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
从类复制的说明: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)
.- 指定者:
writeInternal
在类中AbstractGenericHttpMessageConverter<Object>
- 参数:
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- 抛出:
IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errors
writePrefix
protected void writePrefix(JsonGenerator generator, Object object) throws IOException
Write a prefix before the main content.- 参数:
generator
- the generator to use for writing content.object
- the object to write to the output message.- 抛出:
IOException
writeSuffix
protected void writeSuffix(JsonGenerator generator, Object object) throws IOException
Write a suffix after the main content.- 参数:
generator
- the generator to use for writing content.object
- the object to write to the output message.- 抛出:
IOException
getJavaType
protected JavaType getJavaType(Type type, @Nullable Class<?> contextClass)
Return the JacksonJavaType
for the specified type and context class.- 参数:
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
)- 返回:
- the Jackson JavaType
getJsonEncoding
protected JsonEncoding getJsonEncoding(@Nullable MediaType contentType)
Determine the JSON encoding to use for the given content type.- 参数:
contentType
- the media type as requested by the caller- 返回:
- the JSON encoding to use (never
null
)
getDefaultContentType
@Nullable protected MediaType getDefaultContentType(Object object) throws IOException
从类复制的说明: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.- 覆盖:
getDefaultContentType
在类中AbstractHttpMessageConverter<Object>
- 参数:
object
- the type to return the content type for- 返回:
- the content type, or
null
if not known - 抛出:
IOException
getContentLength
protected Long getContentLength(Object object, @Nullable MediaType contentType) throws IOException
从类复制的说明: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.- 覆盖:
getContentLength
在类中AbstractHttpMessageConverter<Object>
- 参数:
object
- the type to return the content length for- 返回:
- the content length, or
null
if not known - 抛出:
IOException