blob: c3a171043ab23b654c35bdce017f8cd3f21c908e [file] [log] [blame]
// Do not edit directly!
// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
= Jackson
:page-aliases: extensions/jackson.adoc
:linkattrs:
:cq-artifact-id: camel-quarkus-jackson
:cq-native-supported: true
:cq-status: Stable
:cq-status-deprecation: Stable
:cq-description: Marshal POJOs to JSON and back using Jackson
:cq-deprecated: false
:cq-jvm-since: 0.3.0
:cq-native-since: 0.3.0
[.badges]
[.badge-key]##JVM since##[.badge-supported]##0.3.0## [.badge-key]##Native since##[.badge-supported]##0.3.0##
Marshal POJOs to JSON and back using Jackson
== What's inside
* xref:{cq-camel-components}:dataformats:jackson-dataformat.adoc[JSON Jackson data format]
Please refer to the above link for usage and configuration details.
== Maven coordinates
https://code.quarkus.io/?extension-search=camel-quarkus-jackson[Create a new project with this extension on code.quarkus.io, window="_blank"]
Or add the coordinates to your existing project:
[source,xml]
----
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jackson</artifactId>
</dependency>
----
Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
== Usage
=== Configuring the Jackson `ObjectMapper`
There are a few ways of configuring the `ObjectMapper` that the `JacksonDataFormat` uses. These are outlined below.
==== `ObjectMapper` created internally by `JacksonDataFormat`
By default, `JacksonDataFormat` will create its own `ObjectMapper` and use the various configuration options on the `DataFormat`
to configure additional Jackson modules, pretty printing and other features.
==== Custom `ObjectMapper` for `JacksonDataFormat`
You can pass a custom `ObjectMapper` instance to `JacksonDataFormat` as follows.
[source,java]
----
ObjectMapper mapper = new ObjectMapper();
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
----
==== Using the Quarkus Jackson `ObjectMapper` with `JacksonDataFormat`
The Quarkus Jackson extension exposes an `ObjectMapper` CDI bean which can be discovered by the `JacksonDataFormat`.
[source,java]
----
ObjectMapper mapper = new ObjectMapper();
JacksonDataFormat dataFormat = new JacksonDataFormat();
// Make JacksonDataFormat discover the Quarkus Jackson `ObjectMapper` from the Camel registry
dataFormat.setAutoDiscoverObjectMapper(true);
----
If you are using the JSON binding mode in the Camel REST DSL and want to use the Quarkus Jackson `ObjectMapper`, it can be achieved as follows.
[source,java]
----
@ApplicationScoped
public class Routes extends RouteBuilder() {
public void configure() {
restConfiguration().dataFormatProperty("autoDiscoverObjectMapper", "true");
// REST definition follows...
}
}
----
You can perform customizations on the Quarkus `ObjectMapper` with a `ObjectMapperCustomizer`.
[source,java]
----
@Singleton
public class RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
public void customize(ObjectMapper mapper) {
mapper.registerModule(new CustomModule());
}
}
----
It's also possible to `@Inject` the Quarkus `ObjectMapper` and pass it to the `JacksonDataFormat`.
[source,java]
----
@ApplicationScoped
public class Routes extends RouteBuilder() {
@Inject
ObjectMapper mapper;
public void configure() {
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
// Routes definition follows...
}
}
----