JSON support using Jackson 2 library.
1) Add the dependency:
.
2) Install and encode/decode JSON
Java
import io.jooby.jackson.Jackson2Module;
{
install(new Jackson2Module()); (1)
get("/", ctx -> {
MyObject myObject = ...;
return myObject; (2)
});
post("/", ctx -> {
MyObject myObject = ctx.body(MyObject.class); (3)
...
});
}Kotlin
import io.jooby.jackson.Jackson2Module;
{
install(Jackson2Module()) (1)
get("/") {
val myObject = ...;
myObject (2)
}
post("/") {
val myObject = ctx.body<MyObject>() (3)
...
}
}-
Install Jackson
-
Use Jackson to encode an arbitrary object as JSON
-
Use Jackson to decode JSON to a Java object. Client must specify the
Content-Type: application/jsonheader
Access to default object mapper is available via require call:
Default object mapper
import io.jooby.jackson.Jackson2Module;
{
install(new Jackson2Module());
ObjectMapper mapper = require(ObjectMapper.class);
...
}Kotlin
import io.jooby.jackson.Jackson2Module
{
install(Jackson2Module())
val mapper = require<ObjectMapper>()
}You can provide your own ObjectMapper:
Custom ObjectMapper
import io.jooby.jackson.Jackson2Module;
{
ObjectMapper mapper = new ObjectMapper();
install(new Jackson2Module(mapper));
}Kotlin
import io.jooby.jackson.Jackson2Module
{
val mapper = ObjectMapper()
install(Jackson2Module(mapper))
}This allows to configure Jackson2Module for doing xml processing:
XmlMapper
import io.jooby.jackson.Jackson2Module;
{
install(new Jackson2Module(new XmlMapper()));
}Kotlin
import io.jooby.jackson.Jackson2Module
{
install(Jackson2Module(XmlMapper()))
}If you want json and xml processing then install twice:
XmlMapper
import io.jooby.jackson.Jackson2Module;
{
install(new Jackson2Module(new ObjectMapper()));
install(new Jackson2Module(new XmlMapper()));
}Kotlin
import io.jooby.jackson.Jackson2Module
{
install(Jackson2Module(ObjectMapper()))
install(Jackson2Module(XmlMapper()))
}Jackson module can be provided by a dependency injection framework.
Provisioning Modules
import io.jooby.jackson.Jackson2Module;
{
install(new Jackson2Module().module(MyModule.class);
}Kotlin
import io.jooby.jackson.Jackson2Module
{
install(Jackson2Module().module(MyModule::class.java)
}At startup time Jooby ask dependency injection framework to provide a MyModule instance.