Class MappingJackson2JsonView

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

public class MappingJackson2JsonView extends AbstractJackson2View
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).

The default constructor uses the default configuration provided by Jackson2ObjectMapperBuilder.

Compatible with Jackson 2.9 to 2.12, as of Spring 5.3.

Jeremy Grelle, Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
  • Field Details

  • Constructor Details

    • MappingJackson2JsonView

      public MappingJackson2JsonView()
      Construct a new MappingJackson2JsonView using default configuration provided by Jackson2ObjectMapperBuilder and setting the content type to application/json.
    • MappingJackson2JsonView

      public MappingJackson2JsonView(ObjectMapper objectMapper)
      Construct a new MappingJackson2JsonView using the provided ObjectMapper and setting the content type to application/json.
  • Method Details

    • setJsonPrefix

      public void setJsonPrefix(String jsonPrefix)
      Specify a custom prefix to use for this view's JSON output. Default is none.
      See Also:
    • 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 should be stripped before parsing the string as JSON.

      See Also:
    • 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.
      Specified by:
      setModelKey in class AbstractJackson2View
    • setModelKeys

      public void setModelKeys(@Nullable 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

      @Nullable public final Set<String> getModelKeys()
      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 MappingJackson2HttpMessageConverter with an @ResponseBody request-handling method.

      Default is false.

    • filterModel

      protected Object filterModel(Map<String,Object> model)
      Filter 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 modelKeys property.

      Specified by:
      filterModel in class AbstractJackson2View
      model - the model, as passed on to AbstractJackson2View.renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
      the value to be rendered
    • writePrefix

      protected void writePrefix(JsonGenerator generator, Object object) throws IOException
      Description copied from class: AbstractJackson2View
      Write a prefix before the main content.
      writePrefix in class AbstractJackson2View
      generator - the generator to use for writing content.
      object - the object to write to the output message.