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, JsonGenerator generator)Instantiates a JSON builder with the given generator. |
StreamingJsonBuilder
(java.io.Writer writer, java.lang.Object content)Instantiates a JSON builder, possibly with some existing data structure. |
StreamingJsonBuilder
(java.io.Writer writer, java.lang.Object content, JsonGenerator generator)Instantiates a JSON builder, possibly with some existing data structure and the given generator. |
| Type Params | Return 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() |
Instantiates a JSON builder.
writer - A writer to which Json will be writtenInstantiates a JSON builder with the given generator.
writer - A writer to which Json will be writtengenerator - used to generate the outputInstantiates 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 nullInstantiates a JSON builder, possibly with some existing data structure and the given generator.
writer - A writer to which Json will be writtencontent - a pre-existing data structure, default to nullgenerator - used to generate the outputNamed 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"}]}'
}
name - The name of the JSON attributecoll - 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