Mule内のDataMapperトランスフォームを使用して、第三者呼び出しからの応答を別の構造にマップしようとしています。条件に基づくMuleのフラットマッピングへの配列
第三者からは(とりわけ)一連のアイテムがあり、配列内の1つのアイテムをオブジェクト(JSON)にマッピングしたいと考えています。入力引数として利用可能なリクエスト内の項目の識別子を受け取ります。
私の質問は、識別子に基づいてアイテムのフィールドをどのようにマッピングできますか?
<account>
<accountNumber>1234567</accountNumber>
<books>
<book>
<id>1</id>
<title>Sample title1</title>
<availableFrom>21-03-16</availableFrom>
</book>
<book>
<id>2</id>
<title>Sample title2</title>
<availableFrom>21-03-16</availableFrom>
</book>
<book>
<id>3</id>
<title>Sample title3</title>
<availableFrom>21-03-16</availableFrom>
</book>
</books>
</account>
例XML応答がなる必要があります:
{
"person": {
"accountNumber": 1234567,
"selectedBook": {
"id": 1,
"title": "Sample title1"
},
"otherBooks": [
{
"id": 2,
"title": "Sample title2"
},
{
"id": 3,
"title": "Sample title3"
}
]
}
}
選択した書籍のIDがinputArgument.bookId
に保持されます。
各フィールドのxpathルールを使用してマッピングを完了できますが、xpathにbookIdをハードコードする必要があります。代わりに、私は、提供されている(そしてinputArgumentで利用可能な)実際のIDを代用できる必要があります。タイトル
/account/books/book[child::id=1]/title
ため
のXPath私はidと他のさまざまな修正を置き換えるためにMELを追加しようとしたが、何も動作していないようにみえます。 bookIdフィールドを代用する方法はありますか?
注:クライアントの制限により、私はDataWeaveを使用できません。
あなたは/アカウント/書籍/ブックにするために、各試すことができますが、このような何かを行うことができます。各ペイロードに対して、各パラメータの値を取得します。 jsonはPOJOを作成してから、それぞれのペイロードからマッピングを実行した後にオブジェクトをjsonトランスフォーマに変換するだけです。 –
ありがとうラルフ。私は、「各パラメータの価値を知る」ということについて少しは理解していませんでした。もう少し情報を提供できますか? – user2294382
foreachを使って/ account/books/iterateに進むと、各書籍アイテムを取得できます。 foreachの中でjsonに変換して#[payload.id]、#[payload.title]のようなことをすることができます –