Map operator in Mule | Iterate array in Mule




Map operator in Mule | Iterate array in Mule

It returns an array with the values that result out of applying a transformation function (lambda) to each of the values in the object. The keys of the original object are all ignored by this operation and the object is treated as an array. To have access to the keys, you can use the operation map object instead. The lambda is invoked with two parameters: index and the value. If these parameters are not named, the index is defined by default as $$ and the value as $. The index refers to the position of a key:value pair when the object is treated as an array.

In our example map operator iterates the input array and returns output in the form of array itself.

map operator flow :


Transform Message configuration :


url : localhost:8085/api/map
method : post

Input : 

[{
"id" : 1,
"name" : "Himanshu",
"age" : 34
},

{
"id" : 2,
"name" : "Bharat",
"age" : 35
}
]

Output :

[
    {
        "id": 1,
        "name": "Himanshu",
        "age": 34,
        "year": 2019
    },
    {
        "id": 2,
        "name": "Bharat",
        "age": 35,
        "year": 2019
    }
]

XML project code : 


<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
    <flow name="test_mapFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/map" doc:name="HTTP"/>
        <dw:transform-message doc:name="Transform Message" metadata:id="7d30ce8c-8913-4c7d-8660-a03cd5dacddb">
            <dw:input-payload mimeType="application/json"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload map ((payload01 , indexOfPayload01) -> {
id: payload01.id,
name: payload01.name,
age: payload01.age,
year: 2019
})]]></dw:set-payload>
        </dw:transform-message>
    </flow>
</mule>