mule getting data from json payload

14,055

Solution 1

UPDATE: Recent versions of Mule have JSON Path support in MEL, so a simple expression like #[json:Name] now works.

From the MEL tips page

MEL has no direct support for JSON. The json-to-object-transformer can turn a JSON payload into a hierarchy of simple data structures that are easily parsed with MEL.

So for your case:

<json:json-to-object-transformer returnClass="java.lang.Object" />
<logger message="#[message.payload[0].Name]" level="INFO" />

I've added [0] because what you've shown here:

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

is not a JSON object but a JSON array containing a single JSON object.

Solution 2

In Mule ESB 3.7.0

This work:

#[json:Name]
Share:
14,055
TechFind
Author by

TechFind

SOreadytohelp

Updated on July 07, 2022

Comments

  • TechFind
    TechFind almost 2 years

    My payload is

    <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>`
    

    which prints ( this is the json array input given)

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

    Now, I need to get data from the payload:

    <logger message="#[payload.Name]" level="INFO" doc:name="Logger"/>

    it prints null. How do I get data from the payload using MEL? Is there any simpler way of getting in Groovy or xpath?

    EDIT

    Passed single json data as:

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

    logger:

      <logger message="#[payload.Name]" level="INFO" doc:name="Logger"/>
    

    it prints null value.