Jooby

Jackson

JSON support using Jackson 2 library.

Usage

1) Add the dependency:

Maven
Gradle
<dependency>
  <groupId>io.jooby</groupId>
  <artifactId>jooby-jackson</artifactId>
  <version>4.4.0</version>
</dependency>

2) Install and encode/decode JSON

Java
Kotlin
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)
    ...
  });
}
  1. Install Jackson

  2. Use Jackson to encode an arbitrary object as JSON

  3. Use Jackson to decode JSON to a Java object. Client must specify the Content-Type: application/json header

Working with ObjectMapper

Access to default object mapper is available via require call:

Default object mapper
Java
Kotlin
import io.jooby.jackson.Jackson2Module;

{
  install(new Jackson2Module());

  ObjectMapper mapper = require(ObjectMapper.class);

  ...
}

You can provide your own ObjectMapper:

Custom ObjectMapper
Java
Kotlin
import io.jooby.jackson.Jackson2Module;

{
  ObjectMapper mapper = new ObjectMapper();

  install(new Jackson2Module(mapper));
}

This allows to configure Jackson2Module for doing xml processing:

XmlMapper
Java
Kotlin
import io.jooby.jackson.Jackson2Module;

{
  install(new Jackson2Module(new XmlMapper()));
}

If you want json and xml processing then install twice:

XmlMapper
Java
Kotlin
import io.jooby.jackson.Jackson2Module;

{
  install(new Jackson2Module(new ObjectMapper()));
  install(new Jackson2Module(new XmlMapper()));
}

Provisioning Jackson Modules

Jackson module can be provided by a dependency injection framework.

Provisioning Modules
Java
Kotlin
import io.jooby.jackson.Jackson2Module;

{
  install(new Jackson2Module().module(MyModule.class);
}

At startup time Jooby ask dependency injection framework to provide a MyModule instance.