Skip to content

Latest commit

 

History

History
184 lines (137 loc) · 3.23 KB

File metadata and controls

184 lines (137 loc) · 3.23 KB

Jackson

JSON support using Jackson 2 library.

Usage

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)
    ...
  }
}
  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
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()))
}

Provisioning Jackson Modules

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.