org.springframework.http.converter.json
public class MappingJacksonHttpMessageConverter extends org.springframework.http.converter.AbstractHttpMessageConverter<Object> implements org.springframework.http.converter.GenericHttpMessageConverter<Object>
HttpMessageConverter
that can read and write JSON using Jackson'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.
MappingJacksonJsonView
Modifier and Type | Field and Description |
---|---|
static Charset |
DEFAULT_CHARSET |
Constructor and Description |
---|
MappingJacksonHttpMessageConverter()
Construct a new
MappingJacksonHttpMessageConverter . |
Modifier and Type | Method and Description |
---|---|
boolean |
canRead(Class<?> clazz,
org.springframework.http.MediaType mediaType) |
boolean |
canRead(Type type,
Class<?> contextClass,
org.springframework.http.MediaType mediaType) |
boolean |
canWrite(Class<?> clazz,
org.springframework.http.MediaType mediaType) |
protected org.codehaus.jackson.type.JavaType |
getJavaType(Type type,
Class<?> contextClass)
Return the Jackson
JavaType for the specified type and context class. |
protected org.codehaus.jackson.JsonEncoding |
getJsonEncoding(org.springframework.http.MediaType contentType)
Determine the JSON encoding to use for the given content type.
|
org.codehaus.jackson.map.ObjectMapper |
getObjectMapper()
Return the underlying
ObjectMapper for this view. |
Object |
read(Type type,
Class<?> contextClass,
org.springframework.http.HttpInputMessage inputMessage) |
protected Object |
readInternal(Class<?> clazz,
org.springframework.http.HttpInputMessage inputMessage) |
void |
setJsonPrefix(String jsonPrefix)
Specify a custom prefix to use for this view's JSON output.
|
void |
setObjectMapper(org.codehaus.jackson.map.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
org.codehaus.jackson.impl.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, write
public static final Charset DEFAULT_CHARSET
public MappingJacksonHttpMessageConverter()
MappingJacksonHttpMessageConverter
.public void setObjectMapper(org.codehaus.jackson.map.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 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 org.codehaus.jackson.map.ObjectMapper getObjectMapper()
ObjectMapper
for this view.public void setJsonPrefix(String jsonPrefix)
setPrefixJson(boolean)
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.
setJsonPrefix(java.lang.String)
public void setPrettyPrint(boolean prettyPrint)
org.codehaus.jackson.impl.DefaultPrettyPrinter
when writing JSON.
This is a shortcut for setting up an ObjectMapper
as follows:
ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true); converter.setObjectMapper(mapper);
The default value is false
.
public boolean canRead(Class<?> clazz, org.springframework.http.MediaType mediaType)
public boolean canRead(Type type, Class<?> contextClass, org.springframework.http.MediaType mediaType)
canRead
in interface org.springframework.http.converter.GenericHttpMessageConverter<Object>
public 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>
IOException
org.springframework.http.converter.HttpMessageNotReadableException
public Object read(Type type, Class<?> contextClass, org.springframework.http.HttpInputMessage inputMessage) throws IOException, org.springframework.http.converter.HttpMessageNotReadableException
read
in interface org.springframework.http.converter.GenericHttpMessageConverter<Object>
IOException
org.springframework.http.converter.HttpMessageNotReadableException
protected 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>
IOException
org.springframework.http.converter.HttpMessageNotWritableException
protected org.codehaus.jackson.type.JavaType getJavaType(Type type, Class<?> contextClass)
JavaType
for the specified type and context class.
The default implementation returns TypeFactory.type(java.lang.reflect.Type)
or TypeFactory.type(type, TypeFactory.type(contextClass))
,
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 forcontextClass
- a context class for the target type, for example a class
in which the target type appears in a method signature, can be null
protected org.codehaus.jackson.JsonEncoding getJsonEncoding(org.springframework.http.MediaType contentType)
contentType
- the media type as requested by the callernull
)Copyright © 2015 OpenMRS Inc.. All Rights Reserved.