类 AbstractJackson2HttpMessageConverter
- 所有已实现的接口:
GenericHttpMessageConverter<Object>,HttpMessageConverter<Object>
- 直接已知子类:
MappingJackson2CborHttpMessageConverter,MappingJackson2HttpMessageConverter,MappingJackson2SmileHttpMessageConverter,MappingJackson2XmlHttpMessageConverter
HttpMessageConverter implementations.
Compatible with Jackson 2.9 to 2.12.
- 从以下版本开始:
- 4.0
- 作者:
- Arjen Poutsma, Keith Donald, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze, Sam Brannen, Harry Yang
- 另请参阅:
-
字段概要
字段修饰符和类型字段说明protected ObjectMapperprivate static final HashMap<String,JsonEncoding> private Map<Class<?>,Map<MediaType, ObjectMapper>> private Booleanprivate final PrettyPrinter从类继承的字段 cn.taketoday.http.converter.AbstractHttpMessageConverter
logger -
构造器概要
构造器限定符构造器说明protectedAbstractJackson2HttpMessageConverter(ObjectMapper objectMapper) protectedAbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType) protectedAbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes) -
方法概要
修饰符和类型方法说明booleanThis implementation checks if the given class is supported, and if the supported media types include the given media type.booleanIndicates whether the given type can be read by this converter.booleanprivate voidprotected ObjectReadercustomizeReader(ObjectReader reader, JavaType javaType) Subclasses can use this method to customizeObjectReaderused for reading values.protected ObjectWritercustomizeWriter(ObjectWriter writer, JavaType javaType, MediaType contentType) Subclasses can use this method to customizeObjectWriterused for writing values.protected CharsetgetCharset(MediaType contentType) Determine the charset to use for JSON input.protected LonggetContentLength(Object object, MediaType contentType) Returns the content length for the given type.protected MediaTypegetDefaultContentType(Object object) Returns the default content type for the given type.protected JavaTypegetJavaType(Type type, Class<?> contextClass) Return the JacksonJavaTypefor the specified type and context class.protected JsonEncodinggetJsonEncoding(MediaType contentType) Determine the JSON encoding to use for the given content type.Return the supported media type(s) forProblemDetail.Return the mainObjectMapperin use.private Map<Class<?>,Map<MediaType, ObjectMapper>> getObjectMappersForType(Class<?> clazz) Return ObjectMapper registrations for the given class, if any.getSupportedMediaTypes(Class<?> clazz) Return the list of media types supported by this converter for the given class.protected voidlogWarningIfNecessary(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.read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) Read an object of the given type form the given input message, and returns it.protected ObjectreadInternal(Class<?> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.private ObjectreadJavaType(JavaType javaType, HttpInputMessage inputMessage) voidregisterObjectMappersForType(Class<?> clazz, Consumer<Map<MediaType, ObjectMapper>> registrar) Configure theObjectMapperinstances to use for the givenClass.private ObjectMapperselectObjectMapper(Class<?> targetType, MediaType targetMediaType) Select an ObjectMapper to use, either the main ObjectMapper or another if the handling for the given Class has been customized throughregisterObjectMappersForType(Class, Consumer).voidsetObjectMapper(ObjectMapper objectMapper) Configure the mainObjectMapperto use for Object conversion.voidsetPrettyPrint(boolean prettyPrint) Whether to use theDefaultPrettyPrinterwhen writing JSON.protected voidwriteInternal(Object object, Type type, HttpOutputMessage outputMessage) Abstract template method that writes the actual body.protected voidwritePrefix(JsonGenerator generator, Object object) Write a prefix before the main content.protected voidwriteSuffix(JsonGenerator generator, Object object) Write a suffix after the main content.从类继承的方法 cn.taketoday.http.converter.AbstractGenericHttpMessageConverter
canWrite, supports, write, writeInternal从类继承的方法 cn.taketoday.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从接口继承的方法 cn.taketoday.http.converter.HttpMessageConverter
getSupportedMediaTypes, read, write
-
字段详细资料
-
ENCODINGS
-
defaultObjectMapper
-
objectMapperRegistrations
-
prettyPrint
-
ssePrettyPrinter
-
-
构造器详细资料
-
AbstractJackson2HttpMessageConverter
-
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType) -
AbstractJackson2HttpMessageConverter
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes)
-
-
方法详细资料
-
setObjectMapper
Configure the mainObjectMapperto use for Object conversion. If not set, a defaultObjectMapperinstance is created.Setting a custom-configured
ObjectMapperis one way to take further control of the JSON serialization process. For example, an extendedSerializerFactorycan 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. -
getObjectMapper
Return the mainObjectMapperin use. -
registerObjectMappersForType
public void registerObjectMappersForType(Class<?> clazz, Consumer<Map<MediaType, ObjectMapper>> registrar) Configure theObjectMapperinstances to use for the givenClass. This is useful when you want to deviate from thedefaultObjectMapper or have theObjectMappervary byMediaType.Note: Use of this method effectively turns off use of the default
ObjectMapperandsupportedMediaTypesfor the given class. Therefore it is important for the mappings configured here toincludeevery MediaType that must be supported for the given class.- 参数:
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
-
getObjectMappersForType
Return ObjectMapper registrations for the given class, if any.- 参数:
clazz- the class to look up for registrations for- 返回:
- a map with registered MediaType-to-ObjectMapper registrations, or empty if in case of no registrations for the given class.
-
getSupportedMediaTypes
从接口复制的说明:HttpMessageConverterReturn 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.- 参数:
clazz- the type of class to check- 返回:
- the list of media types supported for the given class
-
getObjectMapperRegistrations
-
getMediaTypesForProblemDetail
Return the supported media type(s) forProblemDetail. By default, an empty list, unless overridden in subclasses. -
setPrettyPrint
public void setPrettyPrint(boolean prettyPrint) Whether to use theDefaultPrettyPrinterwhen writing JSON. This is a shortcut for setting up anObjectMapperas follows:ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); converter.setObjectMapper(mapper);
-
configurePrettyPrint
private void configurePrettyPrint() -
canRead
从类复制的说明:AbstractHttpMessageConverterThis implementation checks if the given class is supported, and if the supported media types include the given media type.- 指定者:
canRead在接口中HttpMessageConverter<Object>- 覆盖:
canRead在类中AbstractHttpMessageConverter<Object>- 参数:
clazz- the class to test for readabilitymediaType- the media type to read (can benullif not specified); typically the value of aContent-Typeheader.- 返回:
trueif readable;falseotherwise
-
canRead
从接口复制的说明:GenericHttpMessageConverterIndicates 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 benullif not specified. Typically the value of aContent-Typeheader.- 返回:
trueif readable;falseotherwise
-
canWrite
从类复制的说明:AbstractHttpMessageConverterThis 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 benullif not specified); typically the value of anAcceptheader.- 返回:
trueif writable;falseotherwise
-
selectObjectMapper
@Nullable private ObjectMapper selectObjectMapper(Class<?> targetType, @Nullable MediaType targetMediaType) Select an ObjectMapper to use, either the main ObjectMapper or another if the handling for the given Class has been customized throughregisterObjectMappersForType(Class, Consumer). -
logWarningIfNecessary
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)
-
read
public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException 从接口复制的说明:GenericHttpMessageConverterRead 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 thecanReadmethod 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 从类复制的说明:AbstractHttpMessageConverterAbstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, cn.taketoday.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
-
readJavaType
- 抛出:
IOException
-
customizeReader
Subclasses can use this method to customizeObjectReaderused for reading values.- 参数:
reader- the reader instance to customizejavaType- the target type of element values to read to- 返回:
- the customized
ObjectReader
-
getCharset
Determine the charset to use for JSON input.By default this is either the charset from the input
MediaTypeor otherwise falling back onUTF-8. Can be overridden in subclasses.- 参数:
contentType- the content type of the HTTP input message- 返回:
- the charset to use
-
writeInternal
protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException 从类复制的说明:AbstractGenericHttpMessageConverterAbstract template method that writes the actual body. Invoked fromAbstractGenericHttpMessageConverter.write(T, java.lang.reflect.Type, cn.taketoday.http.MediaType, cn.taketoday.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
-
customizeWriter
protected ObjectWriter customizeWriter(ObjectWriter writer, @Nullable JavaType javaType, @Nullable MediaType contentType) Subclasses can use this method to customizeObjectWriterused for writing values.- 参数:
writer- the writer instance to customizejavaType- the type of element values to writecontentType- the selected media type- 返回:
- the customized
ObjectWriter
-
writePrefix
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
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
Return the JacksonJavaTypefor 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
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
从类复制的说明:AbstractHttpMessageConverterReturns the default content type for the given type. Called whenAbstractHttpMessageConverter.write(T, cn.taketoday.http.MediaType, cn.taketoday.http.HttpOutputMessage)is invoked without a specified content type parameter.By default, this returns the first element of the
supportedMediaTypesproperty, if any. Can be overridden in subclasses.- 覆盖:
getDefaultContentType在类中AbstractHttpMessageConverter<Object>- 参数:
object- the type to return the content type for- 返回:
- the content type, or
nullif not known - 抛出:
IOException
-
getContentLength
从类复制的说明:AbstractHttpMessageConverterReturns 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
nullif not known - 抛出:
IOException
-