Package groovy.json

Class StreamingJsonBuilder.StreamingJsonDelegate

java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.json.StreamingJsonBuilder.StreamingJsonDelegate
All Implemented Interfaces:
groovy.lang.GroovyObject
Enclosing class:
StreamingJsonBuilder

public static class StreamingJsonBuilder.StreamingJsonDelegate
extends groovy.lang.GroovyObjectSupport
The delegate used when invoking closures
  • Field Details

    • writer

      protected final Writer writer
    • first

      protected boolean first
    • state

      protected groovy.json.StreamingJsonBuilder.StreamingJsonDelegate.State state
  • Constructor Details

    • StreamingJsonDelegate

      public StreamingJsonDelegate​(Writer w, boolean first)
    • StreamingJsonDelegate

      public StreamingJsonDelegate​(Writer w, boolean first, JsonGenerator generator)
  • Method Details

    • getWriter

      public Writer getWriter()
      Returns:
      Obtains the current writer
    • invokeMethod

      public Object invokeMethod​(String name, Object args)
    • 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) groovy.lang.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) groovy.lang.Closure c) throws IOException
      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) groovy.lang.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) groovy.lang.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, groovy.lang.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()
    • writeName

      protected void writeName​(String name) throws IOException
      Throws:
      IOException
    • writeValue

      protected void writeValue​(Object value) throws IOException
      Throws:
      IOException
    • writeArray

      protected void writeArray​(List<Object> list) throws IOException
      Throws:
      IOException
    • isCollectionWithClosure

      public static boolean isCollectionWithClosure​(Object[] args)
    • writeCollectionWithClosure

      public static Object writeCollectionWithClosure​(Writer writer, Collection coll, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) groovy.lang.Closure closure) throws IOException
      Throws:
      IOException
    • cloneDelegateAndGetContent

      public static void cloneDelegateAndGetContent​(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) groovy.lang.Closure c)
    • cloneDelegateAndGetContent

      public static void cloneDelegateAndGetContent​(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) groovy.lang.Closure c, boolean first)
    • curryDelegateAndGetContent

      public static void curryDelegateAndGetContent​(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) groovy.lang.Closure c, Object o)
    • curryDelegateAndGetContent

      public static void curryDelegateAndGetContent​(Writer w, @DelegatesTo(value=StreamingJsonDelegate.class,strategy=1) groovy.lang.Closure c, Object o, boolean first)