2016-06-14 8 views
1

私はMulesoftの初心者です.JsonオブジェクトをParse Templateトランスフォーマを介してXMLオブジェクトに変換しようとしています。しかし、Jsonオブジェクトが未定義の要素数を持つ配列を持つ場合、適切なアプローチは何ですか?例えばデータ内に配列を持つ解析テンプレートトランスフォーマーを使用

、私は

{ "名前" のように見えるJSONオブジェクトがある場合: "メトシェラ"、 「趣味:[ "名前": "ギター"、 "名前を": "料理"、 "名前": "いろいろ書い"、 ... ]}

趣味の数は、実行時
では不明であると、私のXMLテンプレートは、次のようになります。

<Person> 
<Name>#[payload.name]</Name> 
<Hobbies> 
    <!- What should this bit look like --> 
</Hobbies> 

だから - 私の質問は、私はXMLに開放JSON配列の変換にアプローチする方法ですか?

現在、コミュニティエディションを検討しているため、エンタープライズエディションで利用可能なデータマッピング機能にアクセスすることはできません。

おかげで個人的に

答えて

0

、コミュニティ版を使用して、XMLオブジェクトにJSONオブジェクトを変換するために、私が使用します。JSONをXML変圧器にとオブジェクトをObjectに。

ただし、構文解析テンプレートを使用して変換するには、Mule Expression Language(MEL)を使用します。例:

<Person> 
<Name>#[json:name]</Name> 
<Hobbies> 
#[ 
    org.json.JSONObject jsonObject = new org.json.JSONObject(payload.toString()); 
    org.json.JSONArray jsonArray = jsonObject.get("hobbies"); 
    String hobbies = ""; 
    for(int i = 0; i < jsonArray.length(); i++) { 
     hobbies += "<Name>" + jsonArray.get(i).getString("name") + "</Name>"; 
    } 
    hobbies; 
] 
</Hobbies> 
</Person> 
+0

こんにちは@Sulthony応答ありがとうございます。 2つの間のスキーマは同じではないので、デフォルトのトランスフォーマーを直接使用することはできません。あなたの解決策はうまくいくかもしれません。ノードを構築するために文字列の連結を行う必要はありません。反復変数を宣言し、それをループ内で呼び出すことは可能ですか?また、この段階でのペイロードの種類はLinkedHashMapなので、提案された解決策が変わるかどうかは疑問です –

+0

*文字列連結*を* XML Parser *に置き換えることができます。 MELを使用することで、必要に応じて変換コードを記述することができます。私の答えはちょうどそれをどのように使用するかのアイデアを示す。 –

関連する問題