网页中,把JSON对象转换为CSV,并下载:
function convertToCSV(items) {
if (items.length === 0) return '';
const headers = Object.keys(items[0]);
let csv = headers.join(',') + '\r\n';
items.forEach(item => {
const row = headers.map(header => {
let value = item[header] !== undefined ? item[header] : '';
if (value === null || value === undefined || header === 'burnDownChart') {
value = '';
} else if (typeof value === 'object') {
value = JSON.stringify(value, null, 2);
} else {
value = String(value);
}
if (value.includes(',') || value.includes('\n') || value.includes('\r') || value.includes('"')) {
value = value.replace(/"/g, '""');
value = `"${value}"`;
}
return value;
});
csv += row.join(',') + '\r\n';
});
return csv;
}
function downloadCSV(csvData, filename = 'data.csv') {
const blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement('a');
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
使用:
const csvData = convertToCSV(data.data.records);
downloadCSV(csvData);