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