从Mule中的JSON获取数据值

时间:2018-06-27 03:31:16

标签: json mule dataweave mule-esb

我收到来自API调用的以下响应,现在尝试获取变量中的值。

[{"Name":"My name","Address":"add1","Location":"NY"}]

尝试了以下所有方法,但所有方法都返回null或错误。

<set-variable variableName="alertIdPayload" value="#[payload[0].Name]" doc:name="Payload"/>

<set-variable variableName="alertIdPayload" value="#[message.payload[0].Name]" doc:name="Payload"/>

<set-variable variableName="alertIdPayload" value="#[json:Name]" doc:name="Payload"/>

<set-variable variableName="alertIdPayload" value="#[json:payload[0]/Name]" doc:name="Payload"/>

有什么想法要获得这个价值吗?

2 个答案:

答案 0 :(得分:1)

首先转换为地图数组,然后使用MEL表达式提取值:

<json:json-to-object-transformer
            returnClass="java.util.HashMap[]" doc:name="JSON to Object" />
<set-variable variableName="alertIdPayload" value="#[payload[0].Name]" doc:name="Payload"/>

答案 1 :(得分:0)

您可以在DataWeave中进行设置,也可以进行json-to-object转换并使用set-variable组件:

这是数据织法:

<dw:transform-message doc:name="Transform Message">
  <dw:set-variable variableName="alertIdPayload">
    <![CDATA[
      %dw 1.0
      %output application/java
      ---
      payload[0].Name
    ]]>
  </dw:set-variable>
</dw:transform-message>

这是变压器和set-variable组件:

<json:json-to-object-transformer returnClass="java.util.List" mimeType="application/java" doc:name="JSON to Object"/>
<set-variable variableName="alertIdPayload" value="#[payload[0].Name]" doc:name="Variable"/>

希望这会有所帮助。