スキーマ検証用に Mule 3 にバンドルされていた JSON Module が、Mule 4 で新しい JSON Module に置き換わります。
JSON を使用する変換を移行するには、DataWeave を使用することをお勧めします。
トランスフォーマーの移行
Mule 3 の場合、多くのコンポーネントでは、項目にアクセスできるようペイロードは POJO である必要がありました。Mule 4 では、JSON ペイロードで直接 DataWeave をクエリ言語として使用し、ペイロードを中間ステップとして POJO に変換する必要性を完全に回避できます。
JSON to Object トランスフォーマー
json:json-to-object-transformer に設定されるマッピングルールの場合は、DataWeave でルールを記述できます。
-
Mule 3 の場合:
例: マッパー設定で使用される Mixin
public abstract class AppleMixin { AppleMixin(@JsonProperty("bitten") boolean wasBitten) { super(); } }例: マッパーを参照するトランスフォーマー
<json:mapper name="myMapper"> <json:mixin mixinClass="org.mule.module.json.transformers.AppleMixin" targetClass="org.mule.tck.testmodels.fruit.Apple"/> </json:mapper> <flow name="flow"> <json:json-to-object-transformer returnClass="org.mule.tck.testmodels.fruit.Apple" mapper-ref="myMapper"/> </flow> -
Mule 4 の場合:
例: DataWeave をマッパーとして使用
<flow name="flow"> <ee:transform> <ee:message> <ee:set-payload> <![CDATA[%dw 2.0 type apple = Object { class: "org.mule.tck.testmodels.fruit.Apple"} output application/java --- { wasBitten = bitten } as apple ]]> </ee:set-payload> </ee:message> </ee:transform> </flow>
Mule 4 ではマッパーや mixin クラスを定義する必要がありません。マッピングルールは DataWeave コードを使用して定義されます。
Object to JSON トランスフォーマー
json:object-to-json-transformer のマッピングルールも DataWeave を使用して表されます。
Mule 3 の場合:
-
例: Mixin を使用したトランスフォーマー
<flow name="flow"> <json:object-to-json-transformer returnClass="org.mule.tck.testmodels.fruit.Apple"> <json:serialization-mixin mixinClass="org.mule.module.json.transformers.AppleMixin" targetClass="org.mule.tck.testmodels.fruit.Apple"/> </json:object-to-json-transformer> </flow>
Mule 4 の場合:
-
例: DataWeave をマッパーとして使用
<flow name="flow"> <ee:transform> <ee:message> <ee:set-payload> <![CDATA[%dw 2.0 output application/json --- { bitten = wasBitten } ]]> </ee:set-payload> </ee:message> </ee:transform> </flow>
Mule 4 では変換で出力形式を設定できます。この場合は、変換関数が JSON ペイロードを返すように式で出力を application/json として定義します。
XSLT 操作の移行
Mule 4 の JSON Module は、XSLT マッピングに基づいて JSON を変換するコンポーネントは提供されていません。この場合には、次のような対処法があります。
-
XSLT を DataWeave 変換に移行する (推奨)。
-
XML Module の XSLT サポートを使用して最初にペイロードを XML に変換する。
<flow name="flow">
...
<xml-module:xslt-transform>
<xml-module:content>#[output application/xml --- payload]</xml-module:content>
<xml-module:xslt>
(the XSLT transformation) ...
</xml-module:xslt>
</xml-module:xslt-transform>
...
</flow>