Я хотел бы знать, как преобразовать json в csv в javascript, код ниже работает, но в примере сценария, если заголовок details
имеет значения, разделенные запятой service, finance
, тогда значение будет сдвинуто к следующему столбцы
convertToCSV(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
var str = '';
for (var i = 0; i < array.length; i++) {
var line = '';
for (var index in array[i]) {
if (line != '') line += ','
line += array[i][index];
}
console.log(str, line);
str += line + '\r\n';
}
return str;
}
exportCSV =(tabledata) =>{
const items = tabledata;
const fileTitle = "Sample";
// Convert Object to JSON
var jsonObject = JSON.stringify(items);
var csv = this.convertToCSV(jsonObject);
console.log(csv);
var exportedFilenmae = fileTitle + '.csv' || 'export.csv';
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, Sample Report);
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", "Sample Report");
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
<button onClick="exportCSV(tabledata)">Download as CSV</button>
const tabledata = [
["id", "details", "status"],
[1, "service,finance", "Active"],
[2, "service", "Inactive"],
[3, "member,service,finance", "Active"]
]
Ожидаемый результат: