第59章 JacksonXML


Jackson XML は、XML Mapper エクステンションとともに Jackson ライブラリー を使用して XML ペイロードを Java オブジェクトにアンマーシャリングしたり、Java オブジェクトを XML ペイロードにマーシャリングしたりする Data Format です。注記:Jackson に精通している場合、この XML データ形式は JSON の対応する方法と同じように動作するため、JSON シリアライゼーション/デシリアライズにアノテーションが付けられたクラスで使用できます。

また、この拡張機能は JAXB の "Code first" アプローチ を模倣します。

このデータ形式は、Woodstox (特にpretty print などの機能)に依存します。これは、高速で効率的な XML プロセッサーです。

from("activemq:My.Queue").
  unmarshal().jacksonxml().
  to("mqseries:Another.Queue");
Copy to Clipboard Toggle word wrap

59.1. JacksonXML オプション

JacksonXML データ形式は、以下に示す 15 個のオプションをサポートします。

Expand
名前デフォルトJava タイプ説明

xmlMapper

 

文字列

指定された ID で既存の XmlMapper を検索し、使用します。

prettyPrint

false

ブール値

適切にフォーマットされたきれいな印刷出力を有効にします。デフォルトでは false です。

unmarshalType

 

文字列

アンマーシャリング時に使用する Java 型のクラス名。

jsonView

 

文字列

POJO を JSON にマーシャリングする際に、JSON 出力から特定のフィールドを除外したい場合があります。Jackson では、JSON ビューを使用してこれを実現できます。このオプションは、JsonView アノテーションを持つクラスを参照するためのものです。

include

 

文字列

pojo を JSON にマーシャリングする必要があり、pojo に null 値を持つフィールドがいくつかある場合。これらの null 値をスキップしたい場合は、このオプションを NON_NULL に設定できます。

allowJmsType

 

ブール値

JMS ユーザーが JMS 仕様の JMSType ヘッダーを使用して、アンマーシャリングに使用する FQN クラス名を指定できるようにするために使用されます。

collectionType

 

文字列

使用するレジストリーを参照するカスタムコレクションタイプを参照します。このオプションはあまり使用しないでください。ただし、デフォルトとして java.util.Collection に基づくものとは異なるコレクションタイプを使用できます。

useList

 

ブール値

Map の List または Pojo の List にアンマーシャリングします。

enableJaxbAnnotationModule

 

ブール値

jackson の使用時に JAXB アノテーションモジュールを有効にするかどうか。有効にすると、Jackson によって JAXB アノテーションを使用できます。

moduleClassNames

 

文字列

カスタム Jackson モジュール com.fasterxml.jackson.databind.Module を使用するには、FQN クラス名を持つ文字列として指定します。複数のクラスはコンマで区切ることができます。

moduleRefs

 

文字列

Camel レジストリーから参照されるカスタム Jackson モジュールを使用します。複数のモジュールはコンマで区切ることができます。

enableFeatures

 

文字列

Jackson com.fasterxml.jackson.databind.ObjectMapper で有効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。

disableFeatures

 

文字列

Jackson com.fasterxml.jackson.databind.ObjectMapper で無効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。

allowUnmarshallType

 

ブール値

有効にすると、Jackson はアンマーシャリング中に CamelJacksonUnmarshalType ヘッダーの使用を試みることができます。これは、使用する必要がある場合にのみ有効にする必要があります。

contentTypeHeader

 

ブール値

データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。

59.1.1. Spring DSL での Jackson XML の使用

Spring DSL で Data Format を使用する場合は、最初にデータ形式を宣言する必要があります。これは、DataFormats XML タグで実行されます。

        <dataFormats>
            <!-- here we define a Xml data format with the id jack and that it should use the TestPojo as the class type when
                 doing unmarshal. The unmarshalType is optional, if not provided Camel will use a Map as the type -->
            <jacksonxml id="jack" unmarshalType="org.apache.camel.component.jacksonxml.TestPojo"/>
        </dataFormats>
Copy to Clipboard Toggle word wrap

そして、ルートでこの ID を参照できます。

       <route>
            <from uri="direct:back"/>
            <unmarshal><custom ref="jack"/></unmarshal>
            <to uri="mock:reverse"/>
        </route>
Copy to Clipboard Toggle word wrap

59.1.2. POJO フィールドをマーシャリングから除外する

POJO を XML にマーシャリングする場合は、XML 出力から特定のフィールドを除外する場合があります。Jackson では、JSON ビュー を使用してこれを実現できます。まず、1 つ以上のマーカークラスを作成します。

@JsonView アノテーションを持つマーカークラスを使用して、特定のフィールドを包含/除外します。注釈はゲッターでも機能します。

最後に、Camel JacksonXMLDataFormat を使用して上記の POJO を XML にマーシャリングします。

結果となる XML には weight フィールドがない点に注意してください。

<pojo age="30" weight="70"/>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat