Package groovy.json

# Class JsonOutput

java.lang.Object
groovy.json.JsonOutput

public class JsonOutput extends Object
Class responsible for the actual String serialization of the possible values of a JSON structure. This class can also be used as a category to add `toJson()` methods to various types.

This class does not provide the ability to customize the resulting output. A `JsonGenerator` can be used if the ability to alter the resulting output is required.

Since:
  1.8.0
See Also:
  - `JsonGenerator`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `JsonOutput.JsonUnescaped`
  Represents unescaped JSON

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JsonOutput()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static String`
  `prettyPrint(String jsonPayload)`
  Pretty print a JSON payload.
  `static String`
  `prettyPrint(String jsonPayload, boolean disableUnicodeEscaping)`
  Pretty print a JSON payload.
  `static String`
  `prettyPrint(String jsonPayload, boolean disableUnicodeEscaping, int maxNestingDepth)`
  Pretty print a JSON payload, bounding its nesting depth explicitly.
  `static String`
  `toJson(Closure closure)`
  `static String`
  `toJson(Expando expando)`
  `static String`
  `toJson(Boolean bool)`
  `static String`
  `toJson(Character c)`
  `static String`
  `toJson(Number n)`
  `static String`
  `toJson(Object object)`
  `static String`
  `toJson(String s)`
  `static String`
  `toJson(URL url)`
  `static String`
  `toJson(Calendar cal)`
  Format a calendar instance that is parseable from JavaScript, according to ISO-8601.
  `static String`
  `toJson(Date date)`
  Format a date that is parseable from JavaScript, according to ISO-8601.
  `static String`
  `toJson(Map m)`
  `static String`
  `toJson(UUID uuid)`
  `static JsonOutput.JsonUnescaped`
  `unescaped(CharSequence text)`
  Obtains JSON unescaped text for the given text

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

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

- ## Constructor Details

  - ### JsonOutput

    public JsonOutput()

- ## Method Details

  - ### toJson

    public static String toJson(Boolean bool)
    Returns:
      "true" or "false" for a boolean value

  - ### toJson

    public static String toJson(Number n)
    Returns:
      a string representation for a number
    Throws:
      `JsonException` - if the number is infinite or not a number.

  - ### toJson

    public static String toJson(Character c)
    Returns:
      a JSON string representation of the character

  - ### toJson

    public static String toJson(String s)
    Returns:
      a properly encoded string with escape sequences

  - ### toJson

    public static String toJson(Date date)
    Format a date that is parseable from JavaScript, according to ISO-8601.
    Parameters:
      `date` - the date to format to a JSON string
    Returns:
      a formatted date in the form of a string

  - ### toJson

    public static String toJson(Calendar cal)
    Format a calendar instance that is parseable from JavaScript, according to ISO-8601.
    Parameters:
      `cal` - the calendar to format to a JSON string
    Returns:
      a formatted date in the form of a string

  - ### toJson

    public static String toJson(UUID uuid)
    Returns:
      the string representation of an uuid

  - ### toJson

    public static String toJson(URL url)
    Returns:
      the string representation of the URL

  - ### toJson

    public static String toJson(Closure closure)
    Returns:
      an object representation of a closure

  - ### toJson

    public static String toJson(Expando expando)
    Returns:
      an object representation of an Expando

  - ### toJson

    public static String toJson(Object object)
    Returns:
      "null" for a null value, or a JSON array representation for a collection, array, iterator or enumeration, or representation for other object.

  - ### toJson

    public static String toJson(Map m)
    Returns:
      a JSON object representation for a map

  - ### prettyPrint

    public static String prettyPrint(String jsonPayload)
    Pretty print a JSON payload.

    Nesting depth is bounded by the `groovy.json.maxNestingDepth` system property (default `BaseJsonParser.DEFAULT_MAX_NESTING_DEPTH`), matching the bound the slurpers enforce, so a payload this method will format is one `JsonSlurper` would parse. A payload nested deeper — or left unbalanced, which the lexer cannot distinguish from nesting — is rejected with a `JsonException` rather than expanded into an output quadratically larger than itself. A property value of `0` or less disables the check.

    Use `prettyPrint(String, boolean, int)` to bound a single call instead.

    Parameters:
      `jsonPayload` - a JSON payload
    Returns:
      a pretty representation of JSON payload.

  - ### prettyPrint

    public static String prettyPrint(String jsonPayload, boolean disableUnicodeEscaping)
    Pretty print a JSON payload.

    Nesting depth is bounded by the `groovy.json.maxNestingDepth` system property (default `BaseJsonParser.DEFAULT_MAX_NESTING_DEPTH`), matching the bound the slurpers enforce, so a payload this method will format is one `JsonSlurper` would parse. A payload nested deeper — or left unbalanced, which the lexer cannot distinguish from nesting — is rejected with a `JsonException` rather than expanded into an output quadratically larger than itself. A property value of `0` or less disables the check.

    Use `prettyPrint(String, boolean, int)` to bound a single call instead.

    Parameters:
      `jsonPayload` - a JSON payload
      `disableUnicodeEscaping` - whether to disable unicode escaping
    Returns:
      a pretty representation of JSON payload.
    Since:
      4.0.19

  - ### prettyPrint

    public static String prettyPrint(String jsonPayload, boolean disableUnicodeEscaping, int maxNestingDepth)
    Pretty print a JSON payload, bounding its nesting depth explicitly.

    Every nesting level adds to the indent of each line it encloses, so output size grows with the square of the payload's nesting and an unbounded payload can exhaust memory. A payload nested deeper than `maxNestingDepth` — or left unbalanced, which the lexer cannot distinguish from nesting — is rejected with a `JsonException`. Pass `0` or less to disable the check.

    The other overloads take this bound from the `groovy.json.maxNestingDepth` system property, which applies process-wide; prefer this method to format a deeply nested payload without changing how the rest of the process parses JSON.

    Parameters:
      `jsonPayload` - a JSON payload
      `disableUnicodeEscaping` - whether to disable unicode escaping
      `maxNestingDepth` - the maximum nesting depth to accept; `0` or less disables the check
    Returns:
      a pretty representation of JSON payload.
    Throws:
      `JsonException` - if the payload nests deeper than `maxNestingDepth`
    Since:
      6.0.0

  - ### unescaped

    public static JsonOutput.JsonUnescaped unescaped(CharSequence text)
    Obtains JSON unescaped text for the given text
    Parameters:
      `text` - The text
    Returns:
      The unescaped text