我的有效载荷是
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>`
打印(这是给定的json数组输入)
[{&#34;姓名&#34;:&#34;我的名字&#34;,&#34;地址&#34;:&#34; add1&#34;,&#34;位置&#34; :&#34; NY&#34;}]
现在,我需要从有效负载中获取数据:
<logger message="#[payload.Name]" level="INFO" doc:name="Logger"/>
它打印为null。如何使用MEL从有效负载获取数据?有没有更简单的方法进入Groovy或xpath?
修改
将单个json数据传递为:
{"Name":"My name","Address":"add1","Location":"NY"}
记录器:
<logger message="#[payload.Name]" level="INFO" doc:name="Logger"/>
它打印空值。
答案 0 :(得分:12)
在Mule ESB 3.7.0中
这项工作:
#[json:Name]
答案 1 :(得分:8)
更新:Mule的最新版本有JSON Path support in MEL,因此现在可以使用#[json:Name]
之类的简单表达式。
MEL没有直接支持JSON。 json-to-object-transformer可以将JSON有效负载转换为易于使用MEL解析的简单数据结构层次结构。
所以对你的情况来说:
<json:json-to-object-transformer returnClass="java.lang.Object" />
<logger message="#[message.payload[0].Name]" level="INFO" />
我已添加[0]
,因为您在此处显示的内容:
[{"Name":"My name","Address":"add1","Location":"NY"}]
不是JSON对象,而是包含单个JSON对象的JSON数组。