JSON

Unlike some other languages, Java does not have first class support for JSON so we provide two classes to make handling JSON in your Vert.x applications a bit easier.

Use the JsonObject class to represent JSON objects and the JsonArray class to represent JSON arrays, you can refer to the Java documentation for more details.

Builders

Builders are provided to provide a more fluent JSON construction:

// The json builder declares a JSON structure
val result = json {

 // in this structure the obj function can be used

 // takes a vararg of Kotlin pairs
 obj(
   "key_1" to 1,
   "key_2" to 2,
   "key_3" to 3
 )

 // or an iterable of Kotlin pairs
 obj((1..3).map { "key_$it" to it })

 // or a Map<String, Any?>
 obj(someMap)

 // apply function on object receiver
 obj {
   for (i in 1..3) {
     put("key_$i", i)
   }
 }
}

You can also build JSON arrays:

// The json builder declares a JSON structure
val result = json {

 // in this structure the array function can be used

 // takes a vararg of values
 array("1", "2", "3")

 // or an iterable of values
 array((1..3).map { "$it" })

 // apply function on array receiver
 array {
   for (i in 1..3) {
     add("$i")
   }
 }
}

Of course it is possible to mix objects and arrays

// The json builder declares a JSON structure
val result = json {

 "firstName" to "Dale",
 "lastName" to "Cooper",
 "age" to 64,
 "names" to array("Dale", "Bartholomew")
}

Postscript operator overloading

The Kotlin postscript operator is overloaded for JSON object and array:

print(someObject["firstName"]);
print(someArray[4]);