## JSON

To manipulate JSON object, Vert.x proposes its own implementation of `JsonObject` and `JsonArray`. This is because, unlike some other languages, Java does not have first class support for JSON.

When developping a vert.x application with Groovy, you can rely on these two classes, or use the (JSON support from Groovy. This section explains how to use the Vert.x classes.

Note | Most vert.x methods taking a JSON object as argument in their Java version, take a map instead.

### JSON objects

The `JsonObject` class represents JSON objects.

A JSON object is basically just a map which has string keys and values can be of one of the JSON supported types (string, number, boolean).

JSON objects also support `null` values.

#### Creating JSON objects

Empty JSON objects can be created with the default constructor.

You can create a JSON object from a string or g-string JSON representation as follows:

    def object = new JsonObject("{\"foo\":\"bar\"}")
    def object2 = new JsonObject("""
    {
    "foo": "bar"
    }
    """)

In Groovy it’s also convenient to create a JSON object from a map:

    def map = [ "foo" : "bar" ]
    def json = new JsonObject(map)

Nested maps are transformed to nested JSON objects.

#### Putting entries into a JSON object

Use the `put` methods to put values into the JSON object.

The method invocations can be chained because of the fluent API:

    def object = new JsonObject()
    object.put("foo", "bar").put("num", 123).put("mybool", true)

#### Getting values from a JSON object

You get values from a JSON object using the `getXXX` methods, for example:

    dev val1 = jsonObject.getString("some-key")
    def val2 = jsonObject.getInteger("some-other-key")

#### Encoding the JSON object to a String

You use `encode` to encode the object to a String form. There is also a `encodePrettily` that makes the output pretty (understand multi-line and indented).

### JSON arrays

The `JsonArray` class represents JSON arrays.

A JSON array is a sequence of values (string, number, boolean).

JSON arrays can also contain `null` values.

#### Creating JSON arrays

Empty JSON arrays can be created with the default constructor.

You can create a JSON array from a string JSON representation or a map as follows:

    def object = new JsonObject("""{foo:["bar", "baz"}""")
    def object2 = new JsonObject(["foo": ["bar", "baz"]])

#### Adding entries into a JSON array

You add entries to a JSON array using the `add` methods.

    def array = new JsonArray()
    array.add("foo").add(123).add(false)

#### Getting values from a JSON array

You get values from a JSON array using the `getXXX` methods, for example:

    def val = array.getString(0)
    def intVal = array.getInteger(1)
    def boolVal = array.getBoolean(2)

#### Encoding the JSON array to a String

You use `encode` to encode the array to a String form. There is also a `encodePrettily` that makes the output pretty (understand multi-line and indented).