在数据中使用解析模板转换器与数组
问题描述:
我是Mulesoft的新手,我正在寻求通过解析模板转换器将Json对象转换为XML对象。直截了当的,但是,当Json对象有一个元素数量不确定的数组时,什么是合适的方法?在数据中使用解析模板转换器与数组
举例来说,如果我有一个JSON对象,看起来像
{ “名”: “玛土撒拉”, “爱好:[ “名”: “吉他”, “名”: “烹饪”, “名”: “成才”, ... ]}
那里爱好的数量是在运行时
未知的,我的XML模板的样子:
<Person>
<Name>#[payload.name]</Name>
<Hobbies>
<!- What should this bit look like -->
</Hobbies>
所以 - 我的问题是我应该如何处理的开放式JSON数组到XML的转换?
请注意,我们目前正在探索社区版,因此无法访问通过企业版提供的数据映射功能。
感谢
答
个人,改造一个JSON对象到XML对象,通过使用社区版,我会用:JSON到对象和对象到XML变压器。
但是,使用解析模板我将利用Mule表达式语言(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>
嗨@Sulthony感谢您的答复。我们不能直接使用默认转换器,因为两者之间的模式不一样。你的解决方案可能工作,我宁愿不必做任何字符串连接来建立节点。是否有可能声明一个迭代变量并在循环中调用它?此外,在这个阶段的有效载荷类型是LinkedHashMap,所以我想知道这是否会改变您提出的解决方案 –
您可以用* XML Parser *替换* String concatenation *。通过使用MEL,您可以根据您的需要编写转换代码。我的答案只是为了展示如何使用它的想法。 –