访问量: 34039次,访客数: 29107人,浏览量: 1次 
首页  编辑  

网页中把JSON转成CSV并下载

Tags: /计算机文档/网页制作/   Date Created: Thu Jun 12 2025 10:08:59 GMT+0000 (Coordinated Universal Time)
网页中,把JSON对象转换为CSV,并下载:
    function convertToCSV(items) {
        if (items.length === 0) return '';

        // 获取表头
        const headers = Object.keys(items[0]);

        // 构建 CSV 内容
        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);