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
`protected boolean` `first`
`protected groovy.json.StreamingJsonBuilder.StreamingJsonDelegate.State` `state`
`protected java.io.Writer` `writer`

### Constructor Summary

Constructors
Constructor and Description
`StreamingJsonDelegate(java.io.Writer w, boolean first)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `call(java.lang.String name, Closure value)` Writes the name and another JSON object
`void` `call(java.lang.String name, java.util.Collection coll, Closure c)` Delegates to `call(String, Iterable, Closure)`
`void` `call(java.lang.String name, java.lang.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(java.lang.String name, JsonOutput.JsonUnescaped json)` Writes an unescaped value.
`void` `call(java.lang.String name, java.util.List<java.lang.Object> list)` Writes the name and a JSON array
`void` `call(java.lang.String name, java.lang.Object... array)` Writes the name and a JSON array
`void` `call(java.lang.String name, java.lang.Object value)` Writes the name and value of a JSON attribute
`void` `call(java.lang.String name, java.lang.Object value, Closure callable)` Writes the name and value of a JSON attribute
`void` `call(java.lang.String name, Writable json)` Writes the given Writable as the value of the given attribute name
`static void` `cloneDelegateAndGetContent(java.io.Writer w, Closure c)`
`static void` `cloneDelegateAndGetContent(java.io.Writer w, Closure c, boolean first)`
`static void` `curryDelegateAndGetContent(java.io.Writer w, Closure c, java.lang.Object o)`
`static void` `curryDelegateAndGetContent(java.io.Writer w, Closure c, java.lang.Object o, boolean first)`
`java.io.Writer` `getWriter()`
`java.lang.Object` `invokeMethod(java.lang.String name, java.lang.Object args)` Invokes the given method.
`static boolean` `isCollectionWithClosure(java.lang.Object[] args)`
`protected void` `verifyValue()`
`protected void` `writeArray(java.util.List<java.lang.Object> list)`
`static java.lang.Object` `writeCollectionWithClosure(java.io.Writer writer, java.util.Collection coll, Closure closure)`
`static java.lang.Object` `writeCollectionWithClosure(java.io.Writer writer, java.lang.Iterable coll, Closure closure)`
`protected void` `writeName(java.lang.String name)`
`protected void` `writeValue(java.lang.Object value)`

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

`getMetaClass, getProperty, setMetaClass, setProperty`

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

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

### Field Detail

#### writer

    protected final java.io.Writer writer

#### first

    protected boolean first

#### state

    protected groovy.json.StreamingJsonBuilder.StreamingJsonDelegate.State state

### Constructor Detail

#### StreamingJsonDelegate

    public StreamingJsonDelegate(java.io.Writer w,
                                 boolean first)

### Method Detail

#### getWriter

    public java.io.Writer getWriter()

Returns:
  Obtains the current writer

#### invokeMethod

    public java.lang.Object invokeMethod(java.lang.String name,
                                         java.lang.Object args)

Description copied from interface: `GroovyObject`
Invokes the given method.

Specified by:
  `invokeMethod` in interface `GroovyObject`
Overrides:
  `invokeMethod` in class `GroovyObjectSupport`
Parameters:
  `name` - the name of the method to call
  `args` - the arguments to use for the method call
Returns:
  the result of invoking the method

#### call

    public void call(java.lang.String name,
                     java.util.List<java.lang.Object> list)
              throws java.io.IOException

Writes the name and a JSON array

Parameters:
  `name` - The name of the JSON attribute
  `list` - The list representing the array
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     java.lang.Object... array)
              throws java.io.IOException

Writes the name and a JSON array

Parameters:
  `name` - The name of the JSON attribute
  `array` - The list representing the array
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     java.lang.Iterable coll,
                     @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                     Closure c)
              throws java.io.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:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     java.util.Collection coll,
                     @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                     Closure c)
              throws java.io.IOException

Delegates to `call(String, Iterable, Closure)`

Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     java.lang.Object value)
              throws java.io.IOException

Writes the name and value of a JSON attribute

Parameters:
  `name` - The attribute name
  `value` - The value
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     java.lang.Object value,
                     @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                     Closure callable)
              throws java.io.IOException

Writes the name and value of a JSON attribute

Parameters:
  `name` - The attribute name
  `value` - The value
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                     Closure value)
              throws java.io.IOException

Writes the name and another JSON object

Parameters:
  `name` - The attribute name
  `value` - The value
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     JsonOutput.JsonUnescaped json)
              throws java.io.IOException

Writes an unescaped value. Note: can cause invalid JSON if passed JSON is invalid

Parameters:
  `name` - The attribute name
  `json` - The value
Throws:
  `java.io.IOException`

#### call

    public void call(java.lang.String name,
                     Writable json)
              throws java.io.IOException

Writes the given Writable as the value of the given attribute name

Parameters:
  `name` - The attribute name
  `json` - The writable value
Throws:
  `java.io.IOException`

#### verifyValue

    protected void verifyValue()

#### writeName

    protected void writeName(java.lang.String name)
                      throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeValue

    protected void writeValue(java.lang.Object value)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeArray

    protected void writeArray(java.util.List<java.lang.Object> list)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### isCollectionWithClosure

    public static boolean isCollectionWithClosure(java.lang.Object[] args)

#### writeCollectionWithClosure

    public static java.lang.Object writeCollectionWithClosure(java.io.Writer writer,
                                                              java.util.Collection coll,
                                                              @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                              Closure closure)
                                                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeCollectionWithClosure

    public static java.lang.Object writeCollectionWithClosure(java.io.Writer writer,
                                                              java.lang.Iterable coll,
                                                              @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                              Closure closure)
                                                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### cloneDelegateAndGetContent

    public static void cloneDelegateAndGetContent(java.io.Writer w,
                                                  @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                  Closure c)

#### cloneDelegateAndGetContent

    public static void cloneDelegateAndGetContent(java.io.Writer w,
                                                  @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                  Closure c,
                                                  boolean first)

#### curryDelegateAndGetContent

    public static void curryDelegateAndGetContent(java.io.Writer w,
                                                  @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                  Closure c,
                                                  java.lang.Object o)

#### curryDelegateAndGetContent

    public static void curryDelegateAndGetContent(java.io.Writer w,
                                                  @DelegatesTo(value=StreamingJsonBuilder.StreamingJsonDelegate.class)
                                                  Closure c,
                                                  java.lang.Object o,
                                                  boolean first)