mule从json有效载荷获取数据

时间:2014-12-04 18:34:33

标签: xpath groovy mule

我的有效载荷是

<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"/>

它打印空值。

2 个答案:

答案 0 :(得分:12)

在Mule ESB 3.7.0中

这项工作:

#[json:Name]

答案 1 :(得分:8)

更新:Mule的最新版本有JSON Path support in MEL,因此现在可以使用#[json:Name]之类的简单表达式。

来自MEL tips page

  

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数组。