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:
  • 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