Temporary fork of groovy.json.StreamingJsonBuilder until Groovy 2.4.5 is out.
Modifiers | Name | Description |
---|---|---|
static class |
StreamingJsonBuilder.StreamingJsonDelegate |
The delegate used when invoking closures |
Constructor and description |
---|
StreamingJsonBuilder
(java.io.Writer writer) Instantiates a JSON builder. |
StreamingJsonBuilder
(java.io.Writer writer, java.lang.Object content) Instantiates a JSON builder, possibly with some existing data structure. |
Type | Name and description |
---|---|
java.lang.Object |
call(java.util.Map m) Named arguments can be passed to the JSON builder instance to create a root JSON object |
java.lang.Object |
call(groovy.lang.Writable writable) Invokes the given writable against the writer |
void |
call(java.lang.String name) The empty args call will create a key whose value will be an empty JSON object: new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person() |
java.lang.Object |
call(java.util.List l) A list of elements as arguments to the JSON builder creates a root JSON array |
java.lang.Object |
call(java.lang.Object... args) Varargs elements as arguments to the JSON builder create a root JSON array |
java.lang.Object |
call(java.lang.Iterable coll, groovy.lang.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 |
java.lang.Object |
call(groovy.lang.Closure c) A closure passed to a JSON builder will create a root JSON object |
void |
call(java.lang.String name, groovy.lang.Closure c) A name and a closure passed to a JSON builder will create a key with a JSON object |
void |
call(java.lang.String name, java.lang.Iterable coll, groovy.lang.Closure c) A name, 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, java.util.Map map, groovy.lang.Closure callable) If you use named arguments and a closure as last argument, the key/value pairs of the map (as named arguments) and the key/value pairs represented in the closure will be merged together — the closure properties overriding the map key/values in case the same key is used. |
java.lang.Object |
invokeMethod(java.lang.String name, java.lang.Object args) A method call on the JSON builder instance will create a root object with only one key whose name is the name of the method being called. |
Methods inherited from class | Name |
---|---|
class groovy.lang.GroovyObjectSupport |
groovy.lang.GroovyObjectSupport#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#getMetaClass(), groovy.lang.GroovyObjectSupport#setMetaClass(groovy.lang.MetaClass), groovy.lang.GroovyObjectSupport#setProperty(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#getProperty(java.lang.String), groovy.lang.GroovyObjectSupport#wait(long, int), groovy.lang.GroovyObjectSupport#wait(long), groovy.lang.GroovyObjectSupport#wait(), groovy.lang.GroovyObjectSupport#equals(java.lang.Object), groovy.lang.GroovyObjectSupport#toString(), groovy.lang.GroovyObjectSupport#hashCode(), groovy.lang.GroovyObjectSupport#getClass(), groovy.lang.GroovyObjectSupport#notify(), groovy.lang.GroovyObjectSupport#notifyAll() |
class java.lang.Object |
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Instantiates a JSON builder.
writer
- A writer to which Json will be writtenInstantiates a JSON builder, possibly with some existing data structure.
writer
- A writer to which Json will be writtencontent
- a pre-existing data structure, default to nullNamed arguments can be passed to the JSON builder instance to create a root JSON object
Example:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json name: "Tim", age: 31 assert w.toString() == '{"name":"Tim","age":31}' }
m
- a map of key / value pairsInvokes the given writable against the writer
writable
- a map of key / value pairsThe empty args call will create a key whose value will be an empty JSON object:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person() assert w.toString() == '{"person":{}}' }
name
- The name of the empty object to createA list of elements as arguments to the JSON builder creates a root JSON array
Example:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) def result = json([1, 2, 3]) assert result == [ 1, 2, 3 ] assert w.toString() == "[1,2,3]" }
l
- a list of valuesVarargs elements as arguments to the JSON builder create a root JSON array
Example:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) def result = json 1, 2, 3 assert result instanceof List assert w.toString() == "[1,2,3]" }
args
- an array of valuesA 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 authors = [new Author (name: "Guillaume"), new Author (name: "Jochen"), new Author (name: "Paul")] new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json authors, { Author author -> name author.name } assert w.toString() == '[{"name":"Guillaume"},{"name":"Jochen"},{"name":"Paul"}]' }
coll
- a collectionc
- a closure used to convert the objects of collA closure passed to a JSON builder will create a root JSON object
Example:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json { name "Tim" age 39 } assert w.toString() == '{"name":"Tim","age":39}' }
c
- a closure whose method call statements represent key / values of a JSON objectA name and a closure passed to a JSON builder will create a key with a JSON object
Example:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person { name "Tim" age 39 } assert w.toString() == '{"person":{"name":"Tim","age":39}}' }
name
- The key for the JSON objectc
- a closure whose method call statements represent key / values of a JSON objectA name, 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 authors = [new Author (name: "Guillaume"), new Author (name: "Jochen"), new Author (name: "Paul")] new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.people authors, { Author author -> name author.name } assert w.toString() == '{"people":[{"name":"Guillaume"},{"name":"Jochen"},{"name":"Paul"}]}' }
coll
- a collectionc
- a closure used to convert the objects of collIf you use named arguments and a closure as last argument, the key/value pairs of the map (as named arguments) and the key/value pairs represented in the closure will be merged together — the closure properties overriding the map key/values in case the same key is used.
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person(name: "Tim", age: 35) { town "Manchester" } assert w.toString() == '{"person":{"name":"Tim","age":35,"town":"Manchester"}}' }
name
- The name of the JSON objectmap
- The attributes of the JSON objectcallable
- Additional attributes of the JSON object represented by the closureA method call on the JSON builder instance will create a root object with only one key whose name is the name of the method being called. This method takes as arguments:
Example with a classical builder-style:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person { name "Tim" age 28 } assert w.toString() == '{"person":{"name":"Tim","age":28}}' }Or alternatively with a method call taking named arguments:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person name: "Tim", age: 32 assert w.toString() == '{"person":{"name":"Tim","age":32}}' }If you use named arguments and a closure as last argument, the key/value pairs of the map (as named arguments) and the key/value pairs represented in the closure will be merged together — the closure properties overriding the map key/values in case the same key is used.
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person(name: "Tim", age: 35) { town "Manchester" } assert w.toString() == '{"person":{"name":"Tim","age":35,"town":"Manchester"}}' }The empty args call will create a key whose value will be an empty JSON object:
new StringWriter().with { w -> def json = new groovy.json.StreamingJsonBuilder(w) json.person() assert w.toString() == '{"person":{}}' }
name
- the single keyargs
- the value associated with the key