See the supported connectors for Application Integration.
FOR_EACH function
FOR_EACH
function
Function Name | Description | Usage | Input parameter | Return value |
---|---|---|---|---|
FOR_EACH |
Applies one or more transformation functions for each element in an array. | FOR_EACH(~objn -> Variable or Value)
Where ~objn indicates the current array iteration element for which you want to apply the transformation functions. By default, the value for n starts from 1. For JSON arrays with schema, you can use a dot (.) notation following to the current array element to directly access the nested property of the that array element. See example. |
Transformation functions. | An array of elements. |
Supported data type
The FOR_EACH
function supports the following data types:
- Boolean array
- Double array
- Integer array
- JSON
- String array
Example 1: Concat a value to all the elements of a string array.
Sample data: $var1$ = {"Alex","Bola","Charlie","Dana","Hao"}
Usage: $var1$.FOR_EACH(~obj1-> ~obj1.CONCAT("@gmail.com"))
Concat the value @gmail.com to var1.
Output:
{
"Alex@gmail.com",
"Bola@gmail.com",
"Charlie@gmail.com",
"Dana@gmail.com",
"Hao@gmail.com"
}
Example 2: Given a JSON array without schema, add a property to all the JSON objects.
Sample data:
$var1$ = { "employeeDetails": [ { "name": "Alex" }, { "name": "Bola" }, { "name": "Charlie" } ] }
Usage: $var1$.employeeDetails.FOR_EACH(~obj1-> ~obj1.SET_PROPERTY("Google","company"))
Add the property company:Google to var1.
Output:
[ { "name": "Alex", "company": "Google" }, { "name": "Bola", "company": "Google" }, { "name": "Charlie", "company": "Google" } ]
Example 3: Given a JSON array without schema, add a property to all the nested JSON objects.
Sample data:
$var1$ = { "employeeDetails": [ { "name": "Alex", "details": [ { "age": "27", "address": "1800 Amphibious Blvd. Mountain View, CA 94045" } ] }, { "name": "Bob", "details": [ { "age": "25", "address": "8 Rue du Nom Fictif 341 Paris" } ] } ], "deptDetails": [ { "id1": "HR" }, { "id2": "Finance" }, { "id3": "Sales" } ] }
Usage: $var1$.employeeDetails.FOR_EACH(~obj1-> ~obj1.GET_PROPERTY("details").FOR_EACH(~obj2-> ~obj2.SET_PROPERTY("dd/mm/yyyy", "dob")))
Add the placeholder property dob: "dd/mm/yyyy" to details in var1.
Output:
[ [ { "age": "27", "address": "1800 Amphibious Blvd. Mountain View, CA 94045", "dob": "dd/mm/yyyy" } ], [ { "age": "25", "address": "8 Rue du Nom Fictif 341 Paris", "dob": "dd/mm/yyyy" } ] ]
Example 4: Given a JSON array with schema, concat the nested properties of the JSON object.
Sample data:
$var1$ = {"citynames": [ { "city": "Abbeville", "info": { "pincode": 29620, "state": "South Carolina", "location" : { "lat" : "50.1055 N", "lon": "1.8368 E" } } }, { "city": "Aberdeen", "info": { "pincode": AB10, "state": "Scotland", "location" : { "lat" : "57.1499 N", "lon": "2.0938 W" } } }, { "city": "Benicia", "info": { "pincode": 94510, "state": "California", "location" : { "lat" : "38.0494 N", "lon": "122.1586 W" } } } ] }
Usage: $var1$.citynames.FOR_EACH(~obj1-> ~obj1.city.CONCAT(",").CONCAT(~obj1.info.location.lat).CONCAT(",").CONCAT(~obj1.info.location.lon))
Concat the nested properties of city using a separator (,) in var1.
Output:
[ "Abbeville,50.1055 N,1.8368 E", "Aberdeen,57.1499 N,2.0938 W", "Benicia,38.0494 N,122.1586 W" ]
Example 5: Resolve a JSON array object reference in a template JSON.
Sample data:
$var2$ = { "cityName": "$~obj1.city$", "latitude": "$~obj1.info.location.lat$", "longitude": "$~obj1.info.location.lon$" }
$var1$ = {"citynames": [ { "city": "Abbeville", "info": { "pincode": 29620, "state": "South Carolina", "location" : { "lat" : "50.1055 N", "lon": "1.8368 E" } } }, { "city": "Aberdeen", "info": { "pincode": AB10, "state": "Scotland", "location" : { "lat" : "57.1499 N", "lon": "2.0938 W" } } }, { "city": "Benicia", "info": { "pincode": 94510, "state": "California", "location" : { "lat" : "38.0494 N", "lon": "122.1586 W" } } } ] }
Usage: $var1$.citynames.FOR_EACH(~obj1-> $var2$.RESOLVETEMPLATE())
Resolves references of ~obj1
in var2, where ~obj1
is the current iterating element of var1.
Output:
[ { "cityName": "Abbeville", "latitude": "50.1055 N", "longitude": "1.8368 E", } { "cityName": "Aberdeen", "latitude": "57.1499 N", "longitude": "2.0938 W", } { "cityName": "Benicia", "latitude": "38.0494 N", "longitude": "122.1586 W", } ]
Recommendation
- Learn how to add and configure a Data Mapping task