从Mule中的JSON获取数据值

从Mule中的JSON获取数据值,json,mule,dataweave,mule-esb,Json,Mule,Dataweave,Mule Esb,我从一个API调用中得到了以下响应,现在尝试在变量中获取一个值 [{"Name":"My name","Address":"add1","Location":"NY"}] 尝试了以下所有方法,但都返回null或error <set-variable variableName="alertIdPayload" value="#[payload[0].Name]" doc:name="Payload"/> <set-variable variableName="alertIdP

我从一个API调用中得到了以下响应,现在尝试在变量中获取一个值

[{"Name":"My name","Address":"add1","Location":"NY"}]
尝试了以下所有方法,但都返回null或error

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

知道如何获取该值吗?

您可以在DataWeave中设置这些值,或者执行json到对象的转换并使用set变量组件:

<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"/>
下面是dataweave:

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

希望这有帮助。

首先转换为贴图数组,然后使用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"/>