org.apache.struts2.json

## Class JSONResult

- java.lang.Object
- - org.apache.struts2.json.JSONResult

- All Implemented Interfaces:
    Serializable, Result

      public class JSONResult
      extends Object
      implements Result

  This result serializes an action into JSON.

  Result parameters:

  - excludeProperties - list of regular expressions matching the properties to be excluded. The regular expressions are evaluated against the OGNL expression representation of the properties.

  Example:

       <!-- START SNIPPET: example -->
       <result name="success" type="json" />
       <!-- END SNIPPET: example -->

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.opensymphony.xwork2.Result

      `Result.LegacyAdapter`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_PARAM` This result type doesn't have a default param, null is ok to reduce noise in logs

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JSONResult()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `addCallbackIfApplicable(javax.servlet.http.HttpServletRequest request, String json)`
    `protected SMD` | `buildSMDObject(ActionInvocation invocation)`
    `protected String` | `createJSONString(javax.servlet.http.HttpServletRequest request, Object rootObject)`
    `protected boolean` | `enableGzip(javax.servlet.http.HttpServletRequest request)`
    `void` | `execute(ActionInvocation invocation)`
    `protected Object` | `findRootObject(ActionInvocation invocation)`
    `String` | `getCallbackParameter()`
    `String` | `getDefaultDateFormat()`
    `protected String` | `getEncoding()` Retrieve the encoding
    `List<Pattern>` | `getExcludePropertiesList()` Gets a list of regular expressions of properties to exclude from the JSON output.
    `List<Pattern>` | `getIncludePropertiesList()`
    `String` | `getRoot()`
    `String` | `getWrapPrefix()`
    `String` | `getWrapSuffix()`
    `boolean` | `isEnableGZIP()`
    `boolean` | `isEnableSMD()`
    `boolean` | `isEnumAsBean()`
    `boolean` | `isExcludeNullProperties()`
    `boolean` | `isIgnoreHierarchy()`
    `boolean` | `isNoCache()`
    `boolean` | `isWrapWithComments()`
    `protected Object` | `readRootObject(ActionInvocation invocation)`
    `void` | `setCallbackParameter(String callbackParameter)`
    `void` | `setContentType(String contentType)`
    `void` | `setDefaultDateFormat(String defaultDateFormat)`
    `void` | `setDefaultEncoding(String val)`
    `void` | `setDevMode(String val)`
    `void` | `setEnableGZIP(boolean enableGZIP)`
    `void` | `setEnableSMD(boolean enableSMD)`
    `void` | `setEncoding(String encoding)` If defined will be used instead of `defaultEncoding`, you can define it with result <result name="success" type="json"> <param name="encoding">UTF-8</param> </result>
    `void` | `setEnumAsBean(boolean enumAsBean)`
    `void` | `setErrorCode(int errorCode)`
    `void` | `setExcludeNullProperties(boolean excludeNullProperties)`
    `void` | `setExcludeProperties(String commaDelim)` Sets a comma-delimited list of regular expressions to match properties that should be excluded from the JSON output.
    `void` | `setExcludeWildcards(String commaDelim)` Sets a comma-delimited list of wildcard expressions to match properties that should be excluded from the JSON output.
    `void` | `setIgnoreHierarchy(boolean ignoreHierarchy)`
    `void` | `setIgnoreInterfaces(boolean ignoreInterfaces)`
    `void` | `setIncludeProperties(String commaDelim)` Sets a comma-delimited list of regular expressions to match properties that should be included in the JSON output.
    `void` | `setIncludeWildcards(String commaDelim)` Sets a comma-delimited list of wildcard expressions to match properties that should be included in the JSON output.
    `void` | `setJsonUtil(JSONUtil jsonUtil)`
    `void` | `setNoCache(boolean noCache)`
    `void` | `setPrefix(boolean prefix)`
    `void` | `setRoot(String root)` Sets the root object to be serialized, defaults to the Action.
    `void` | `setStatusCode(int statusCode)`
    `void` | `setWrapPrefix(String wrapPrefix)`
    `void` | `setWrapSuffix(String wrapSuffix)`
    `void` | `setWrapWithComments(boolean wrapWithComments)`
    `protected void` | `writeToResponse(javax.servlet.http.HttpServletResponse response, String json, boolean gzip)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.opensymphony.xwork2.Result

      `adapt, execute`

- - ### Field Detail

    - #### DEFAULT_PARAM

          public static final String DEFAULT_PARAM

      This result type doesn't have a default param, null is ok to reduce noise in logs

  - ### Constructor Detail

    - #### JSONResult

          public JSONResult()

  - ### Method Detail

    - #### setDefaultEncoding

          public void setDefaultEncoding(String val)

    - #### setDevMode

          public void setDevMode(String val)

    - #### setJsonUtil

          public void setJsonUtil(JSONUtil jsonUtil)

    - #### getExcludePropertiesList

          public List<Pattern> getExcludePropertiesList()

      Gets a list of regular expressions of properties to exclude from the JSON output.
      Returns:
        A list of compiled regular expression patterns

    - #### setExcludeProperties

          public void setExcludeProperties(String commaDelim)

      Sets a comma-delimited list of regular expressions to match properties that should be excluded from the JSON output.
      Parameters:
        `commaDelim` - A comma-delimited list of regular expressions

    - #### setExcludeWildcards

          public void setExcludeWildcards(String commaDelim)

      Sets a comma-delimited list of wildcard expressions to match properties that should be excluded from the JSON output.
      Parameters:
        `commaDelim` - A comma-delimited list of wildcard patterns

    - #### getIncludePropertiesList

          public List<Pattern> getIncludePropertiesList()

      Returns:
        the includeProperties

    - #### setIncludeProperties

          public void setIncludeProperties(String commaDelim)

      Sets a comma-delimited list of regular expressions to match properties that should be included in the JSON output.
      Parameters:
        `commaDelim` - A comma-delimited list of regular expressions

    - #### setIncludeWildcards

          public void setIncludeWildcards(String commaDelim)

      Sets a comma-delimited list of wildcard expressions to match properties that should be included in the JSON output.
      Parameters:
        `commaDelim` - A comma-delimited list of wildcard patterns

    - #### execute

          public void execute(ActionInvocation invocation)
                       throws Exception

      Throws:
        `Exception`

    - #### readRootObject

          protected Object readRootObject(ActionInvocation invocation)

    - #### findRootObject

          protected Object findRootObject(ActionInvocation invocation)

    - #### createJSONString

          protected String createJSONString(javax.servlet.http.HttpServletRequest request,
                                            Object rootObject)
                                     throws JSONException

      Throws:
        `JSONException`

    - #### enableGzip

          protected boolean enableGzip(javax.servlet.http.HttpServletRequest request)

    - #### writeToResponse

          protected void writeToResponse(javax.servlet.http.HttpServletResponse response,
                                         String json,
                                         boolean gzip)
                                  throws IOException

      Throws:
        `IOException`

    - #### buildSMDObject

          protected SMD buildSMDObject(ActionInvocation invocation)

    - #### getEncoding

          protected String getEncoding()

      Retrieve the encoding
      Returns:
        The encoding associated with this template (defaults to the value of param 'encoding', if empty default to 'struts.i18n.encoding' property)

    - #### addCallbackIfApplicable

          protected String addCallbackIfApplicable(javax.servlet.http.HttpServletRequest request,
                                                   String json)

    - #### getRoot

          public String getRoot()

      Returns:
        OGNL expression of root object to be serialized

    - #### setRoot

          public void setRoot(String root)

      Sets the root object to be serialized, defaults to the Action. If the Action implements `ModelDriven`, the Model will be used instead, with the logic assuming the Model was pushed onto the top of the stack.
      Parameters:
        `root` - OGNL expression of root object to be serialized

    - #### isWrapWithComments

          public boolean isWrapWithComments()

      Returns:
        Generated JSON must be enclosed in comments

    - #### setWrapWithComments

          public void setWrapWithComments(boolean wrapWithComments)

      Parameters:
        `wrapWithComments` - Wrap generated JSON with comments

    - #### isEnableSMD

          public boolean isEnableSMD()

      Returns:
        Result has SMD generation enabled

    - #### setEnableSMD

          public void setEnableSMD(boolean enableSMD)

      Parameters:
        `enableSMD` - Enable SMD generation for action, which can be used for JSON-RPC

    - #### setIgnoreHierarchy

          public void setIgnoreHierarchy(boolean ignoreHierarchy)

    - #### setIgnoreInterfaces

          public void setIgnoreInterfaces(boolean ignoreInterfaces)

      Parameters:
        `ignoreInterfaces` - Controls whether interfaces should be inspected for method annotations You may need to set to this true if your action is a proxy as annotations on methods are not inherited

    - #### setEnumAsBean

          public void setEnumAsBean(boolean enumAsBean)

      Parameters:
        `enumAsBean` - Controls how Enum's are serialized : If true, an Enum is serialized as a name=value pair (name=name()) (default) If false, an Enum is serialized as a bean with a special property _name=name()

    - #### isEnumAsBean

          public boolean isEnumAsBean()

    - #### isEnableGZIP

          public boolean isEnableGZIP()

    - #### setEnableGZIP

          public void setEnableGZIP(boolean enableGZIP)

    - #### isNoCache

          public boolean isNoCache()

    - #### setNoCache

          public void setNoCache(boolean noCache)

      Parameters:
        `noCache` - Add headers to response to prevent the browser from caching the response

    - #### isIgnoreHierarchy

          public boolean isIgnoreHierarchy()

    - #### isExcludeNullProperties

          public boolean isExcludeNullProperties()

    - #### setExcludeNullProperties

          public void setExcludeNullProperties(boolean excludeNullProperties)

      Parameters:
        `excludeNullProperties` - Do not serialize properties with a null value

    - #### setStatusCode

          public void setStatusCode(int statusCode)

      Parameters:
        `statusCode` - Status code to be set in the response

    - #### setErrorCode

          public void setErrorCode(int errorCode)

      Parameters:
        `errorCode` - Error code to be set in the response

    - #### setCallbackParameter

          public void setCallbackParameter(String callbackParameter)

    - #### getCallbackParameter

          public String getCallbackParameter()

    - #### setPrefix

          public void setPrefix(boolean prefix)

      Parameters:
        `prefix` - Prefix JSON with "{} &&"

    - #### setContentType

          public void setContentType(String contentType)

      Parameters:
        `contentType` - Content type to be set in the response

    - #### getWrapPrefix

          public String getWrapPrefix()

    - #### setWrapPrefix

          public void setWrapPrefix(String wrapPrefix)

      Parameters:
        `wrapPrefix` - Text to be inserted at the begining of the response

    - #### getWrapSuffix

          public String getWrapSuffix()

    - #### setWrapSuffix

          public void setWrapSuffix(String wrapSuffix)

      Parameters:
        `wrapSuffix` - Text to be inserted at the end of the response

    - #### setEncoding

          public void setEncoding(String encoding)

      If defined will be used instead of `defaultEncoding`, you can define it with result <result name="success" type="json"> <param name="encoding">UTF-8</param> </result>
      Parameters:
        `encoding` - valid encoding string

    - #### getDefaultDateFormat

          public String getDefaultDateFormat()

    - #### setDefaultDateFormat

          public void setDefaultDateFormat(String defaultDateFormat)

Copyright © 2000–2025 Apache Software Foundation. All rights reserved.