Package groovy.json

# Class StreamingJsonBuilder.StreamingJsonDelegate

java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.json.StreamingJsonBuilder.StreamingJsonDelegate

All Implemented Interfaces:
  `GroovyObject`

Enclosing class:
  StreamingJsonBuilder

public static class StreamingJsonBuilder.StreamingJsonDelegate extends GroovyObjectSupport
The delegate used when invoking closures

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `first`
  Indicates whether the next entry is the first one in the current context.
  `protected groovy.json.StreamingJsonBuilder.StreamingJsonDelegate.State`
  `state`
  Tracks whether the next token should be a JSON name or value.
  `protected final Writer`
  `writer`
  Writer receiving the streamed JSON output.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StreamingJsonDelegate(Writer w, boolean first)`
  Creates a delegate backed by the default generator.
  `StreamingJsonDelegate(Writer w, boolean first, JsonGenerator generator)`
  Creates a delegate backed by the supplied generator.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `call(String name, JsonOutput.JsonUnescaped json)`
  Writes an unescaped value.
  `void`
  `call(String name, Closure value)`
  Writes the name and another JSON object
  `void`
  `call(String name, Writable json)`
  Writes the given Writable as the value of the given attribute name
  `void`
  `call(String name, Iterable coll, Closure c)`
  A collection and closure passed to a JSON builder will create a root JSON array applying the closure to each object in the collection
  `void`
  `call(String name, Object value)`
  Writes the name and value of a JSON attribute
  `void`
  `call(String name, Object... array)`
  Writes the name and a JSON array
  `void`
  `call(String name, Object value, Closure callable)`
  Writes the name and value of a JSON attribute
  `void`
  `call(String name, Collection coll, Closure c)`
  Delegates to `call(String, Iterable, Closure)`
  `void`
  `call(String name, List<Object> list)`
  Writes the name and a JSON array
  `static void`
  `cloneDelegateAndGetContent(Writer w, Closure c)`
  Clones a closure, assigns this delegate model, and writes its JSON content.
  `static void`
  `cloneDelegateAndGetContent(Writer w, Closure c, boolean first)`
  Clones a closure, assigns this delegate model, and writes its JSON content.
  `static void`
  `curryDelegateAndGetContent(Writer w, Closure c, Object o)`
  Curries an object into a closure, assigns this delegate model, and writes its JSON content.
  `static void`
  `curryDelegateAndGetContent(Writer w, Closure c, Object o, boolean first)`
  Curries an object into a closure, assigns this delegate model, and writes its JSON content.
  `Writer`
  `getWriter()`
  `Object`
  `invokeMethod(String name, Object args)`
  Handles builder-style method calls for nested JSON output.
  `static boolean`
  `isCollectionWithClosure(Object[] args)`
  Indicates whether the supplied arguments represent a collection and closure pair.
  `protected void`
  `verifyValue()`
  Verifies that the current output state expects a JSON value next.
  `protected void`
  `writeArray(List<Object> list)`
  Writes a JSON array value.
  `static Object`
  `writeCollectionWithClosure(Writer writer, Collection coll, Closure closure)`
  Writes a JSON array by applying a closure to each element in the collection.
  `protected void`
  `writeName(String name)`
  Writes a JSON name and the following colon separator.
  `protected void`
  `writeValue(Object value)`
  Writes a scalar JSON value.

  ### Methods inherited from class groovy.lang.GroovyObjectSupport

  `getMetaClass, setMetaClass`

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

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

  ### Methods inherited from interface groovy.lang.GroovyObject

  `getProperty, setProperty`

- ## Field Details

  - ### writer

    protected final Writer writer
    Writer receiving the streamed JSON output.

  - ### first

    protected boolean first
    Indicates whether the next entry is the first one in the current context.

  - ### state

    protected groovy.json.StreamingJsonBuilder.StreamingJsonDelegate.State state
    Tracks whether the next token should be a JSON name or value.

- ## Constructor Details

  - ### StreamingJsonDelegate

    public StreamingJsonDelegate(Writer w, boolean first)
    Creates a delegate backed by the default generator.
    Parameters:
      `w` - the writer receiving JSON output
      `first` - whether the next entry is the first entry

  - ### StreamingJsonDelegate

    public StreamingJsonDelegate(Writer w, boolean first, JsonGenerator generator)
    Creates a delegate backed by the supplied generator.
    Parameters:
      `w` - the writer receiving JSON output
      `first` - whether the next entry is the first entry
      `generator` - the generator used to serialize scalar values

- ## Method Details

  - ### getWriter

    public Writer getWriter()
    Returns:
      Obtains the current writer

  - ### invokeMethod

    public Object invokeMethod(String name, Object args)
    Handles builder-style method calls for nested JSON output.
    Parameters:
      `name` - the JSON name being written
      `args` - the value, values, or closure associated with the name
    Returns:
      this delegate

  - ### call

    public void call(String name, List<Object> list) throws IOException
    Writes the name and a JSON array
    Parameters:
      `name` - The name of the JSON attribute
      `list` - The list representing the array
    Throws:
      `IOException`

  - ### call

    public void call(String name, Object... array) throws IOException
    Writes the name and a JSON array
    Parameters:
      `name` - The name of the JSON attribute
      `array` - The list representing the array
    Throws:
      `IOException`

  - ### call

    public void call(String name, Iterable coll, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c) throws IOException
    A collection and closure passed to a JSON builder will create a root JSON array applying the closure to each object in the collection

    Example:

         class Author {
              String name
         }
         def authorList = [new Author (name: "Guillaume"), new Author (name: "Jochen"), new Author (name: "Paul")]

         new StringWriter().with { w ->
             def json = new groovy.json.StreamingJsonBuilder(w)
             json.book {
                authors authorList, { Author author ->
                 name author.name
               }
             }

             assert w.toString() == '{"book":{"authors":[{"name":"Guillaume"},{"name":"Jochen"},{"name":"Paul"}]}}'
         }

    Parameters:
      `coll` - a collection
      `c` - a closure used to convert the objects of coll
    Throws:
      `IOException`

  - ### call

    public void call(String name, Collection coll, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c) throws IOException
    Delegates to `call(String, Iterable, Closure)`
    Throws:
      `IOException`

  - ### call

    public void call(String name, Object value) throws IOException
    Writes the name and value of a JSON attribute
    Parameters:
      `name` - The attribute name
      `value` - The value
    Throws:
      `IOException`

  - ### call

    public void call(String name, Object value, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure callable) throws IOException
    Writes the name and value of a JSON attribute
    Parameters:
      `name` - The attribute name
      `value` - The value
    Throws:
      `IOException`

  - ### call

    public void call(String name, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure value) throws IOException
    Writes the name and another JSON object
    Parameters:
      `name` - The attribute name
      `value` - The value
    Throws:
      `IOException`

  - ### call

    public void call(String name, JsonOutput.JsonUnescaped json) throws IOException
    Writes an unescaped value. Note: can cause invalid JSON if passed JSON is invalid
    Parameters:
      `name` - The attribute name
      `json` - The value
    Throws:
      `IOException`

  - ### call

    public void call(String name, Writable json) throws IOException
    Writes the given Writable as the value of the given attribute name
    Parameters:
      `name` - The attribute name
      `json` - The writable value
    Throws:
      `IOException`

  - ### verifyValue

    protected void verifyValue()
    Verifies that the current output state expects a JSON value next.

  - ### writeName

    protected void writeName(String name) throws IOException
    Writes a JSON name and the following colon separator.
    Parameters:
      `name` - the JSON name to write
    Throws:
      `IOException` - if writing fails

  - ### writeValue

    protected void writeValue(Object value) throws IOException
    Writes a scalar JSON value.
    Parameters:
      `value` - the value to write
    Throws:
      `IOException` - if writing fails

  - ### writeArray

    protected void writeArray(List<Object> list) throws IOException
    Writes a JSON array value.
    Parameters:
      `list` - the list to serialize
    Throws:
      `IOException` - if writing fails

  - ### isCollectionWithClosure

    public static boolean isCollectionWithClosure(Object[] args)
    Indicates whether the supplied arguments represent a collection and closure pair.
    Parameters:
      `args` - the arguments to inspect
    Returns:
      `true` if the arguments are a collection plus closure pair

  - ### writeCollectionWithClosure

    public static Object writeCollectionWithClosure(Writer writer, Collection coll, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure closure) throws IOException
    Writes a JSON array by applying a closure to each element in the collection.
    Parameters:
      `writer` - the destination writer
      `coll` - the collection to serialize
      `closure` - the closure used to build each JSON object entry
    Returns:
      the supplied writer
    Throws:
      `IOException` - if writing fails

  - ### cloneDelegateAndGetContent

    public static void cloneDelegateAndGetContent(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c)
    Clones a closure, assigns this delegate model, and writes its JSON content.
    Parameters:
      `w` - the destination writer
      `c` - the closure describing the JSON object

  - ### cloneDelegateAndGetContent

    public static void cloneDelegateAndGetContent(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c, boolean first)
    Clones a closure, assigns this delegate model, and writes its JSON content.
    Parameters:
      `w` - the destination writer
      `c` - the closure describing the JSON object
      `first` - whether the next entry is the first entry

  - ### curryDelegateAndGetContent

    public static void curryDelegateAndGetContent(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c, Object o)
    Curries an object into a closure, assigns this delegate model, and writes its JSON content.
    Parameters:
      `w` - the destination writer
      `c` - the closure describing the JSON object
      `o` - the object to curry into the closure

  - ### curryDelegateAndGetContent

    public static void curryDelegateAndGetContent(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) Closure c, Object o, boolean first)
    Curries an object into a closure, assigns this delegate model, and writes its JSON content.
    Parameters:
      `w` - the destination writer
      `c` - the closure describing the JSON object
      `o` - the object to curry into the closure
      `first` - whether the next entry is the first entry