5.5. JSON スキーマドキュメント
Kaoto DataMapper は、構造化された JSON パラメーターの読み取りと JSON ターゲット本体の書き込みをサポートしています。構造化された JSON データが含まれており、JSON データ構造を定義する JSON スキーマがある場合は、JSON スキーマファイルをアタッチし、DataMapper UI でドキュメントツリーをレンダリングして、それを使用してデータマッピングを作成できます。
JSON スキーマファイルを添付するには、以下の手順に従います。
- スキーマファイルをワークスペースディレクトリー内に配置します。
Target BodyまたはParametersセクションのいずれかでAttach a schemaボタンをクリックします。
Attach schema モーダルで、file ボタンをクリックします。
アタッチするスキーマファイルを選択します。
ファイル拡張子が
.jsonの場合、下のラジオボタンが自動的にJSON Schemaに切り替わります。それ以外の場合は、JSON Schemaを選択します。Attachボタンをクリックします。
これで、JSON スキーマドキュメント構造がツリー内にレンダリングされます。
こちらは JSON マッピングを作成するためのデモスクリーンキャストです。
5.5.1. JSON スキーマドキュメントツリー リンクのコピーリンクがクリップボードにコピーされました!
Kaoto DataMapper は、XSLT 3.0 json-to-xml() および xml-to-json() 関数を使用して JSON マッピングをサポートします。このセクションで説明する JSON ドキュメント固有の特性は、主にこれらの XSLT 3.0 JSON サポート関数の影響を受けます。内部の詳細は、XSLT 3.0 仕様を参照してください。
XML スキーマドキュメントが DataMapper ドキュメントツリーにレンダリングされると、その要素名と属性名だけがフィールドラベルとして表示されます。JSON スキーマドキュメントの場合は若干異なります。JSON ドキュメントフィールドには名前がない場合 (匿名) もあるため、フィールドタイプを主なフィールドラベルとして使用します。
-
map: オブジェクトフィールド -
array: 配列フィールド -
string: 文字列フィールド -
number: 数値フィールド
さらに、フィールドに名前がある場合は、フィールドタイプの後に @key 属性として表示されます。たとえば、AccountId という名前の string 型フィールドには、フィールドラベル string [@key = AccountId] が表示されます。
匿名オブジェクトフィールドには map だけが表示されます。
array 型フィールドの場合、注意が必要な点が 1 つあります。array 型フィールドは、その 子 がコレクション、つまり繰り返しフィールドであることを示しますが、array 型フィールド自体は示しません。たとえば、Item という名前の array 型フィールドは、DataMapper UI では次のように表示されます。
この場合、array 型フィールド Item の直接の子である map 型フィールドはコレクションフィールドです。レイヤーアイコン:
map フィールドがコレクションフィールドであることを示します。これは for-each マッピングを作成するときに重要です。for-each マッピングを作成する方法は このマニュアルの後半 で詳しく説明します。
以下は、Kaoto DataMapper UI で作成された JSON データマッピングの例です。Account および Cart 構造化 JSON パラメーターと orderSequence プリミティブパラメーターを消費し、ShipOrder JSON ターゲットボディーを作成します。
XPath 式では、パラメーター Account を参照するために、単なる $Account ではなく、接尾辞 -x が付いた $Account-x が使用されています。Account パラメーターは構造化された JSON であるため、内部的に json-to-xml を使用して XML に変換されます。$Account-x は、JSON から変換された XML ドキュメントを格納する変数です。
ドラッグアンドドロップによってデータマッピングが作成されると、Kaoto DataMapper が自動的にそれを処理します。ただし、XPath 式を手動で編集する場合は、この点に留意してください。
これらの JSON 固有の特性を考慮すると、マッピングを作成する残りの方法は XML と JSON で同じです。Kaoto DataMapper を使用すると、XML から XML、XML から JSON、JSON から XML、JSON から JSON へのマッピングを作成できます。次のセクションでは、このようなマッピングについて見ていきます。