Application Integration- how to run for loop in JavaScript task

np1
Bronze 3
Bronze 3

I am trying to execute below code in javaScript task which convert csv data to json but not getting expected output,

code:

function executeScript(event) {
    var csv = event.getParameter("filecontent");
    var lines1 = csv.split('\n');
    var headers1 = lines1[0].split(',');
    var arrayData = [];
  for(var i=1;i<lines1.length;i++){
    var obj = {};
    var currentline=lines1[i].split(",");
    for(var j=0;j<headers1.length;j++){
      obj[headers1[j]] = currentline[j];
    }
    arrayData.push(obj);
  }
  var jsonData = JSON.stringify(arrayData, null, 2);
  event.log(jsonData);
}
 
output:
[]
 
It seems like for loop is not working. Is there any solution on this?
Solved Solved
0 4 406
1 ACCEPTED SOLUTION

np1
Bronze 3
Bronze 3

 

function executeScript(event) {
    var csv = event.getParameter("filecontent");
const rows = csv.split(/\r?\n/);
const headers = rows[0].split('Ï');
const arrayOfObjects = rows.slice(1).map(row => {
const values = row.split('Ï');
const obj = {};
  headers.forEach((header, index) => {
    obj[header] = values[index];
  });
  return obj;
});
 
const jsonString = JSON.stringify(arrayOfObjects, null, 2); // Convert the records array to JSON string

  event.log(jsonString);
  event.setParameter("json", jsonString)
}

Working code sample.. 

View solution in original post

4 REPLIES 4

Hi @np1,

Welcome to the Google Cloud Community!

Please run the modified code below:

function executeScript(event) {
  var csv = event.getParameter("filecontent"); 
  var lines1 = csv.trim().split(/\r?\n/);
  var headers1 = lines1[0].split(',').map(function(header) {
    return header.trim();
  });
  var arrayData = [];
  
  for (var i = 1; i < lines1.length; i++) {
    var obj = {};
    var currentline = lines1[i].split(",").map(function(value) {
      return value.trim();
    });
    
    if (currentline.length === headers1.length) {
      for (var j = 0; j < headers1.length; j++) {
        obj[headers1[j]] = currentline[j];
      }
      arrayData.push(obj);
    }
  }
  
  var jsonData = JSON.stringify(arrayData, null, 2);
  event.log(jsonData);
}

Let me know if it worked as you expected. Thanks.

Its giving blank array as an output.

np1_0-1701415876692.png

 

np1
Bronze 3
Bronze 3

 

function executeScript(event) {
    var csv = event.getParameter("filecontent");
const rows = csv.split(/\r?\n/);
const headers = rows[0].split('Ï');
const arrayOfObjects = rows.slice(1).map(row => {
const values = row.split('Ï');
const obj = {};
  headers.forEach((header, index) => {
    obj[header] = values[index];
  });
  return obj;
});
 
const jsonString = JSON.stringify(arrayOfObjects, null, 2); // Convert the records array to JSON string

  event.log(jsonString);
  event.setParameter("json", jsonString)
}

Working code sample..