public class MappingJackson2HttpMessageConverter
extends <any>
HttpMessageConverter
that can read and write JSON using Jackson 2.0'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.
Modifier and Type | Field and Description |
---|---|
static java.nio.charset.Charset |
DEFAULT_CHARSET |
private ObjectMapper |
objectMapper |
private boolean |
prefixJson |
Constructor and Description |
---|
MappingJackson2HttpMessageConverter()
Construct a new
BindingJacksonHttpMessageConverter . |
Modifier and Type | Method and Description |
---|---|
boolean |
canRead(java.lang.Class<?> clazz,
MediaType mediaType) |
boolean |
canWrite(java.lang.Class<?> clazz,
MediaType mediaType) |
protected JavaType |
getJavaType(java.lang.Class<?> clazz)
Return the Jackson
JavaType for the specified class. |
protected JsonEncoding |
getJsonEncoding(MediaType contentType)
Determine the JSON encoding to use for the given content type.
|
ObjectMapper |
getObjectMapper()
Return the underlying
ObjectMapper for this view. |
protected java.lang.Object |
readInternal(java.lang.Class<?> clazz,
HttpInputMessage inputMessage) |
void |
setObjectMapper(ObjectMapper objectMapper)
Set the
ObjectMapper for this view. |
void |
setPrefixJson(boolean prefixJson)
Indicate whether the JSON output by this view should be prefixed with "{} &&".
|
protected boolean |
supports(java.lang.Class<?> clazz) |
protected void |
writeInternal(java.lang.Object object,
HttpOutputMessage outputMessage) |
public static final java.nio.charset.Charset DEFAULT_CHARSET
private ObjectMapper objectMapper
private boolean prefixJson
public MappingJackson2HttpMessageConverter()
BindingJacksonHttpMessageConverter
.public void setObjectMapper(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 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 boolean canRead(java.lang.Class<?> clazz, MediaType mediaType)
public boolean canWrite(java.lang.Class<?> clazz, MediaType mediaType)
protected boolean supports(java.lang.Class<?> clazz)
protected java.lang.Object readInternal(java.lang.Class<?> clazz, HttpInputMessage inputMessage) throws java.io.IOException, HttpMessageNotReadableException
java.io.IOException
HttpMessageNotReadableException
protected void writeInternal(java.lang.Object object, HttpOutputMessage outputMessage) throws java.io.IOException, HttpMessageNotWritableException
java.io.IOException
HttpMessageNotWritableException
protected JavaType getJavaType(java.lang.Class<?> clazz)
JavaType
for the specified class.
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(Class<?> clazz) { if (List.class.isAssignableFrom(clazz)) { return objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, MyBean.class); } else { return super.getJavaType(clazz); } }
clazz
- the class to return the java type forprotected JsonEncoding getJsonEncoding(MediaType contentType)
contentType
- the media type as requested by the callernull
)