## org.springframework.web.servlet.view.json
Class MappingJackson2JsonView

    java.lang.Object
      org.springframework.context.support.ApplicationObjectSupport
          org.springframework.web.context.support.WebApplicationObjectSupport
              org.springframework.web.servlet.view.AbstractView
                  org.springframework.web.servlet.view.json.MappingJackson2JsonView

All Implemented Interfaces:
  Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, View

    public class MappingJackson2JsonView

extends AbstractView

Spring MVC `View` that renders JSON content by serializing the model for the current request using Jackson 2's `ObjectMapper`.

By default, the entire contents of the model map (with the exception of framework-specific classes) will be encoded as JSON. If the model contains only one key, you can have it extracted encoded as JSON alone via `setExtractValueFromSingleKeyModel(boolean)`.

Since:
  3.1.2
Author:
  Jeremy Grelle, Arjen Poutsma, Rossen Stoyanchev
See Also:
  `MappingJackson2HttpMessageConverter`

Field Summary
`static String` `DEFAULT_CONTENT_TYPE` Default content type.

Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
`logger`

Fields inherited from interface org.springframework.web.servlet.View
`PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE`

Constructor Summary
`MappingJackson2JsonView()` Construct a new `JacksonJsonView`, setting the content type to `application/json`.

Method Summary
`protected Object` `filterModel(Map<String,Object> model)` Filters out undesired attributes from the given model.
`Set<String>` `getModelKeys()` Return the attributes in the model that should be rendered by this view.
`Set<String>` `getRenderedAttributes()` Deprecated. use `getModelKeys()` instead
`protected void` `prepareResponse(HttpServletRequest request, HttpServletResponse response)` Prepare the given response for rendering.
`protected void` `renderMergedOutputModel(Map<String,Object> model, HttpServletRequest request, HttpServletResponse response)` Subclasses must implement this method to actually render the view.
`void` `setDisableCaching(boolean disableCaching)` Disables caching of the generated JSON.
`void` `setEncoding(com.fasterxml.jackson.core.JsonEncoding encoding)` Set the `JsonEncoding` for this converter.
`void` `setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel)` Set whether to serialize models containing a single attribute as a map or whether to extract the single value from the model and serialize it directly.
`void` `setModelKey(String modelKey)` Set the attribute in the model that should be rendered by this view.
`void` `setModelKeys(Set<String> modelKeys)` Set the attributes in the model that should be rendered by this view.
`void` `setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)` Sets the `ObjectMapper` for this view.
`void` `setPrefixJson(boolean prefixJson)` Indicates whether the JSON output by this view should be prefixed with `"{} && "`.
`void` `setRenderedAttributes(Set<String> renderedAttributes)` Deprecated. use `setModelKeys(Set)` instead

Methods inherited from class org.springframework.web.servlet.view.AbstractView

`addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, isExposePathVariables, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposePathVariables, setRequestContextAttribute, toString, writeToResponse`

Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
`getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
`getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### DEFAULT_CONTENT_TYPE

    public static final String DEFAULT_CONTENT_TYPE

  Default content type. Overridable as bean property.

  See Also:
    Constant Field Values

Constructor Detail

### MappingJackson2JsonView

    public MappingJackson2JsonView()

  Construct a new `JacksonJsonView`, setting the content type to `application/json`.

Method Detail

### setObjectMapper

    public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)

  Sets the `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.

### setEncoding

    public void setEncoding(com.fasterxml.jackson.core.JsonEncoding encoding)

  Set the `JsonEncoding` for this converter. By default, UTF-8 is used.

### setPrefixJson

    public void setPrefixJson(boolean prefixJson)

  Indicates whether the JSON output by this view should be prefixed with `"{} && "`. Default is false.

  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.

### setModelKey

    public void setModelKey(String modelKey)

  Set the attribute in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### setModelKeys

    public void setModelKeys(Set<String> modelKeys)

  Set the attributes in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### getModelKeys

    public Set<String> getModelKeys()

  Return the attributes in the model that should be rendered by this view.

### setRenderedAttributes

    @Deprecated
    public void setRenderedAttributes(Set<String> renderedAttributes)

  Deprecated. use `setModelKeys(Set)` instead

  Set the attributes in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### getRenderedAttributes

    @Deprecated
    public Set<String> getRenderedAttributes()

  Deprecated. use `getModelKeys()` instead

  Return the attributes in the model that should be rendered by this view.

### setExtractValueFromSingleKeyModel

    public void setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel)

  Set whether to serialize models containing a single attribute as a map or whether to extract the single value from the model and serialize it directly.

  The effect of setting this flag is similar to using `MappingJacksonHttpMessageConverter` with an `@ResponseBody` request-handling method.

  Default is `false`.

### setDisableCaching

    public void setDisableCaching(boolean disableCaching)

  Disables caching of the generated JSON.

  Default is `true`, which will prevent the client from caching the generated JSON.

### prepareResponse

    protected void prepareResponse(HttpServletRequest request,
                                   HttpServletResponse response)

  Description copied from class: `AbstractView`
  Prepare the given response for rendering.

  The default implementation applies a workaround for an IE bug when sending download content via HTTPS.

  Overrides:
    `prepareResponse` in class `AbstractView`
  Parameters:
    `request` - current HTTP request
    `response` - current HTTP response

### renderMergedOutputModel

    protected void renderMergedOutputModel(Map<String,Object> model,
                                           HttpServletRequest request,
                                           HttpServletResponse response)
                                    throws Exception

  Description copied from class: `AbstractView`
  Subclasses must implement this method to actually render the view.

  The first step will be preparing the request: In the JSP case, this would mean setting model objects as request attributes. The second step will be the actual rendering of the view, for example including the JSP via a RequestDispatcher.

  Specified by:
    `renderMergedOutputModel` in class `AbstractView`
  Parameters:
    `model` - combined output Map (never `null`), with dynamic values taking precedence over static attributes
    `request` - current HTTP request
    `response` - current HTTP response
  Throws:
    `Exception` - if rendering failed

### filterModel

    protected Object filterModel(Map<String,Object> model)

  Filters out undesired attributes from the given model. The return value can be either another `Map` or a single value object.

  The default implementation removes `BindingResult` instances and entries not included in the `renderedAttributes` property.

  Parameters:
    `model` - the model, as passed on to `renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`
  Returns:
    the object to be rendered