Tec*_*rix 2 mule mule-studio mule-el
我正在使用Mule 3.4 CE,我有一个通过HTTP的JSON数据,格式如下:
{
"People" : [
{
"Details" :
{
"Name" : "John Smith",
"Email" : "abc@mail.com"
}
},
{
"Details" :
{
"Name" : "Tim Smith",
"Email" : "def@mail.com"
}
},
{
"Details" :
{
"Name" : "Ken Smith",
"Email" : "ghi@mail.com"
}
},
}
Run Code Online (Sandbox Code Playgroud)
我需要提取电子邮件并使用这些电子邮件查找Salesforce联系人,同时我想保留JSON有效负载.所以我的问题是如何通过MEL提取电子邮件?(例如"People/Details/*/Email"之类的东西 - 我知道这不是有效的,但我正在寻找合适的语法.
编辑:我想一次性提取电子邮件而不是索引(例如人员/详细信息[0].电子邮件,可能使用MEL.
Rya*_*ter 14
查询json的最佳方法是将其转换为Map.
<json:json-to-object-transformer returnClass="java.util.HashMap" />
Run Code Online (Sandbox Code Playgroud)
然后使用MEL(如标准MVEL或Java语法)查询它
<logger message="#[payload.People[0].Details.email]" level="INFO" />
Run Code Online (Sandbox Code Playgroud)
如果要保持原始json有效负载不变,可以使用richher将映射存储在变量中:
<enricher target="#[flowVars.myJsonMap]">
<json:json-to-object-transformer returnClass="java.util.HashMap" />
</enricher>
Run Code Online (Sandbox Code Playgroud)
并查询变量而不是有效负载:
<logger message="#[flowVars.myJsonMap.People[0].Details.email]" level="INFO" />
Run Code Online (Sandbox Code Playgroud)
您还可以使用Jackson 将json映射到自定义类,并将returnClass属性更改为您的类.
这个MEL备忘单详细说明了使用MEL的JSON处理以及如何处理地图,数组等:http://www.mulesoft.org/documentation/display/current/MEL+Cheat+Sheet
注意:您可能会遇到#[json:]评估程序,但不赞成使用上述方法.
更新:
如果您想立即获取所有电子邮件,可以使用MVEL投影:
<enricher target="#[flowVars.myJsonMap]" source="#[(Details.email in payload.People)]">
<json:json-to-object-transformer returnClass="java.util.HashMap" />
</enricher>
Run Code Online (Sandbox Code Playgroud)
Mvel投影:http://mvel.codehaus.org/MVEL+2.0+Projections+and+Folds
| 归档时间: |
|
| 查看次数: |
13698 次 |
| 最近记录: |