I am trying to execute below code in javaScript task which convert csv data to json but not getting expected output,
code:
Solved! Go to Solution.
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..
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.
have you checked the prebuilt function for this
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..