Mule 将解析模板转换器与数据中的数组一起使用
我是Mulesoft的新手,希望通过解析模板转换器将Json对象转换为XML对象。但是,直截了当地说,当Json对象有一个元素数量不确定的数组时,什么是合适的方法 例如,如果我有一个JSON对象 {“name”:“Methusela”, “爱好:[ “姓名”:“吉他”, “名称”:“烹饪”, “姓名”:“某物”, ... ]} 在运行时爱好的数量未知的情况下Mule 将解析模板转换器与数据中的数组一起使用,mule,Mule,我是Mulesoft的新手,希望通过解析模板转换器将Json对象转换为XML对象。但是,直截了当地说,当Json对象有一个元素数量不确定的数组时,什么是合适的方法 例如,如果我有一个JSON对象 {“name”:“Methusela”, “爱好:[ “姓名”:“吉他”, “名称”:“烹饪”, “姓名”:“某物”, ... ]} 在运行时爱好的数量未知的情况下 我的xml模板如下所示: <Person> <Name>#[payload.name]</Name>
我的xml模板如下所示:
<Person>
<Name>#[payload.name]</Name>
<Hobbies>
<!- What should this bit look like -->
</Hobbies>
#[有效载荷.名称]
因此,我的问题是如何将开放式JSON数组转换为XML
请注意,我们目前正在探索社区版,因此无法通过企业版访问可用的数据映射功能
个人感谢,要使用Community edition将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>
#[json:name]
#[
org.json.JSONObject JSONObject=new org.json.JSONObject(payload.toString());
org.json.JSONArray JSONArray=jsonObject.get(“爱好”);
字符串=”;
for(int i=0;i
就个人而言,要使用Community edition将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>
#[json:name]
#[
org.json.JSONObject JSONObject=new org.json.JSONObject(payload.toString());
org.json.JSONArray JSONArray=jsonObject.get(“爱好”);
字符串=”;
for(int i=0;i
在解析模板中,您可以使用简单的javascript循环:
for(i=0;i<#[payload.Hobbies].length;i++){
document.getElementById('Id').innerHtml += #[payload.Hobbies][i]
}
for(i=0;i在解析模板中,您可以使用简单的javascript循环:
for(i=0;i<#[payload.Hobbies].length;i++){
document.getElementById('Id').innerHtml += #[payload.Hobbies][i]
}
用于(i=0;iHi@Sulthony感谢您的响应。我们不能直接使用默认转换器,因为两者之间的模式不一样。您的解决方案可能会起作用,但我不希望为了构建节点而进行任何字符串连接。是否可以声明迭代变量并在循环中调用该变量?此外,此age是LinkedHashMap,所以我想知道这是否会改变您建议的解决方案。您可以使用XML解析器替换字符串连接。通过使用MEL,您可以根据需要编写转换代码。我的回答只是为了说明如何使用它。您好@Sulthony感谢您的响应。我们不能直接使用默认转换器作为模式两者之间并不相同。您的解决方案可能会起作用,但我不希望为了构建节点而进行任何字符串连接。是否可以声明一个迭代变量并在循环中调用它?此外,此阶段的有效负载类型是LinkedHashMap,因此我想知道这是否会改变您建议的解决方案您可以替换字符串concatena通过使用MEL,您可以根据需要编写转换代码。我的回答只是为了说明如何使用它。