2.33. Jackson
Jackson を使用して、POJO を JSON にマーシャリングし、戻します。
2.33.1. 含まれるもの リンクのコピーリンクがクリップボードにコピーされました!
使用方法と設定の詳細については、上記リンクを参照してください。
2.33.2. Maven コーディネート リンクのコピーリンクがクリップボードにコピーされました!
code.quarkus.redhat.com でこのエクステンションを使用して新しいプロジェクトの作成
または、既存のプロジェクトに座標を追加します。
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jackson</artifactId>
</dependency>
2.33.3. 用途 リンクのコピーリンクがクリップボードにコピーされました!
2.33.3.1. Jackson ObjectMapper の設定 リンクのコピーリンクがクリップボードにコピーされました!
JacksonDataFormat が使用する ObjectMapper を設定するには、いくつかの方法があります。これらの概要を以下に示します。
2.33.3.1.1. JacksonDataFormat によって内部的に作成された ObjectMapper リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、JacksonDataFormat は独自の ObjectMapper を作成し、DataFormat のさまざまな設定オプションを使用して、追加の Jackson モジュール、きれいな印刷、およびその他の機能を設定します。
2.33.3.1.2. JacksonDataFormat のカスタム ObjectMapper リンクのコピーリンクがクリップボードにコピーされました!
次のように、カスタム ObjectMapper インスタンスを JacksonDataFormat に渡すことができます。
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
public class Routes extends RouteBuilder {
public void configure() {
ObjectMapper mapper = new ObjectMapper();
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}
2.33.3.1.3. JacksonDataFormat での Quarkus Jackson ObjectMapper の使用 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus Jackson エクステンションは、JacksonDataFormat によって検出できる ObjectMapper CDI Bean を公開します。
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
public class Routes extends RouteBuilder {
public void configure() {
JacksonDataFormat dataFormat = new JacksonDataFormat();
// Make JacksonDataFormat discover the Quarkus Jackson `ObjectMapper` from the Camel registry
dataFormat.setAutoDiscoverObjectMapper(true);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}
Camel REST DSL で JSON バインディングモードを使用していて、Quarkus Jackson ObjectMapper を使用したい場合は、次のように実現できます。
import org.apache.camel.builder.RouteBuilder;
@ApplicationScoped
public class Routes extends RouteBuilder {
public void configure() {
restConfiguration().dataFormatProperty("autoDiscoverObjectMapper", "true");
// REST definition follows...
}
}
ObjectMapperCustomizer を使用して、Quarkus ObjectMapper でカスタマイズを実行できます。
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.jackson.ObjectMapperCustomizer;
@Singleton
public class RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
public void customize(ObjectMapper mapper) {
mapper.registerModule(new CustomModule());
}
}
Quarkus ObjectMapper を @Inject して、JacksonDataFormat に渡すこともできます。
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
@ApplicationScoped
public class Routes extends RouteBuilder {
@Inject
ObjectMapper mapper;
public void configure() {
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}