public class MappingJackson2HttpMessageConverter extends org.springframework.http.converter.AbstractHttpMessageConverter<Object> implements GenericHttpMessageConverter<Object>
HttpMessageConverter
that can read and write JSON using Jackson 2's ObjectMapper.
This converter can be used to bind to typed beans, or untyped HashMap instances.
By default, this converter supports application/json. This can be overridden by setting the
supportedMediaTypes property.
org.springframework.web.servlet.view.json.MappingJackson2JsonView| Modifier and Type | Field and Description |
|---|---|
static Charset |
DEFAULT_CHARSET |
| Constructor and Description |
|---|
MappingJackson2HttpMessageConverter()
Construct a new
MappingJackson2HttpMessageConverter. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canRead(Class<?> clazz,
org.springframework.http.MediaType mediaType) |
boolean |
canRead(Type type,
org.springframework.http.MediaType mediaType)
Indicates whether the given type can be read by this converter.
|
boolean |
canWrite(Class<?> clazz,
org.springframework.http.MediaType mediaType) |
protected com.fasterxml.jackson.databind.JavaType |
getJavaType(Type type)
Return the Jackson
JavaType for the specified type. |
protected com.fasterxml.jackson.core.JsonEncoding |
getJsonEncoding(org.springframework.http.MediaType contentType)
Determine the JSON encoding to use for the given content type.
|
com.fasterxml.jackson.databind.ObjectMapper |
getObjectMapper()
Return the underlying
ObjectMapper for this view. |
Object |
read(Type type,
org.springframework.http.HttpInputMessage inputMessage)
Read an object of the given type form the given input message, and returns it.
|
protected Object |
readInternal(Class<?> clazz,
org.springframework.http.HttpInputMessage inputMessage) |
void |
setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Set the
ObjectMapper for this view. |
void |
setPrefixJson(boolean prefixJson)
Indicate whether the JSON output by this view should be prefixed with "{} &&".
|
void |
setPrettyPrint(boolean prettyPrint)
Whether to use the
DefaultPrettyPrinter when writing JSON. |
protected boolean |
supports(Class<?> clazz) |
protected void |
writeInternal(Object object,
org.springframework.http.HttpOutputMessage outputMessage) |
canRead, canWrite, getContentLength, getDefaultContentType, getSupportedMediaTypes, read, setSupportedMediaTypes, writepublic static final Charset DEFAULT_CHARSET
public MappingJackson2HttpMessageConverter()
MappingJackson2HttpMessageConverter.public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
ObjectMapper for this view. If not set, a default
ObjectMapper is used.
Setting a custom-configured ObjectMapper is one way to take further control of the JSON
serialization process. For example, an extended org.codehaus.jackson.map.SerializerFactory
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.
public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
ObjectMapper for this view.public void setPrefixJson(boolean prefixJson)
Prefixing the JSON string in this manner is used to help prevent JSON Hijacking. The prefix renders the string syntactically invalid as a script so that it cannot be hijacked. This prefix does not affect the evaluation of JSON, but if JSON validation is performed on the string, the prefix would need to be ignored.
public void setPrettyPrint(boolean prettyPrint)
DefaultPrettyPrinter when writing JSON.
This is a shortcut for setting up an ObjectMapper as follows:
ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); converter.setObjectMapper(mapper);
public boolean canRead(Class<?> clazz, org.springframework.http.MediaType mediaType)
public boolean canRead(Type type, org.springframework.http.MediaType mediaType)
GenericHttpMessageConvertercanRead in interface GenericHttpMessageConverter<Object>type - the type to test for readabilitymediaType - the media type to read, can be null if not specified.
Typically the value of a Content-Type header.true if readable; false otherwisepublic boolean canWrite(Class<?> clazz, org.springframework.http.MediaType mediaType)
protected boolean supports(Class<?> clazz)
supports in class org.springframework.http.converter.AbstractHttpMessageConverter<Object>protected Object readInternal(Class<?> clazz, org.springframework.http.HttpInputMessage inputMessage) throws IOException, org.springframework.http.converter.HttpMessageNotReadableException
readInternal in class org.springframework.http.converter.AbstractHttpMessageConverter<Object>IOExceptionorg.springframework.http.converter.HttpMessageNotReadableExceptionpublic Object read(Type type, org.springframework.http.HttpInputMessage inputMessage) throws IOException, org.springframework.http.converter.HttpMessageNotReadableException
GenericHttpMessageConverterread in interface GenericHttpMessageConverter<Object>type - the type of object to return. This type must have previously
been passed to the canRead method of this interface,
which must have returned true.inputMessage - the HTTP input message to read fromIOException - in case of I/O errorsHttpMessageNotReadableException - in case of conversion errorsprotected void writeInternal(Object object, org.springframework.http.HttpOutputMessage outputMessage) throws IOException, org.springframework.http.converter.HttpMessageNotWritableException
writeInternal in class org.springframework.http.converter.AbstractHttpMessageConverter<Object>IOExceptionorg.springframework.http.converter.HttpMessageNotWritableExceptionprotected com.fasterxml.jackson.databind.JavaType getJavaType(Type type)
JavaType for the specified type.
The default implementation returns ObjectMapper.constructType(java.lang.reflect.Type),
but this can be overridden in subclasses, to allow for custom generic collection handling.
For instance:
protected JavaType getJavaType(Type type) {
if (type instanceof Class && List.class.isAssignableFrom((Class)type)) {
return TypeFactory.collectionType(ArrayList.class, MyBean.class);
} else {
return super.getJavaType(type);
}
}
type - the type to return the java type forprotected com.fasterxml.jackson.core.JsonEncoding getJsonEncoding(org.springframework.http.MediaType contentType)
contentType - the media type as requested by the callernull)Copyright © 2012. All Rights Reserved.