JavaScript 如何将CSV转换为JSON文件

JavaScript 如何将CSV转换为JSON文件

CSV文件是一种常用的文件格式,用于以表格形式存储数据。当用户希望以一种可以轻松在本地机器上打开和阅读的方式下载结构化的信息时,它们尤其有用。由于其可移植性和普适性,CSV文件非常理想。

在本文中,我们将解释如何将JavaScript对象JSON转换为CSV文件格式,以及相反的过程。该代码不使用任何外部库,因此它适用于浏览器和Node.js环境。

从JSON转换为CSV

要将JSON转换为CSV,我们首先需要识别CSV文件的标题。为此,让我们获取传入的每个JavaScript对象中存在的键的列表。使用Object.keys()方法来获取这个键的列表。

<script> 
    const JSONToCSV = (objArray, keys) => { 
        let csv = keys.join(','); 
        objArray.forEach((row) => { 
            let values = []; 
            keys.forEach((key) => { 
                values.push(row[key] || ''); 
            }); 
            csv += '\n' + values.join(','); 
        }); 
        return csv; 
    }; 
  
    const exampleJSON = [ 
        {  
            "date": 20210307,  
            "positives": 28756184,  
            "fatalities": 515148  
        }, 
        {  
            "date": 20210306,  
            "positives": 28714654,  
            "fatalities": 514309  
        }, 
        {  
            "date": 20210305,  
            "positives": 28654639,  
            "fatalities": 512629  
        }, 
        {  
            "date": 20210304,  
            "positives": 28585852,  
            "fatalities": 510408  
        }, 
        {  
            "date": 20210303,  
            "positives": 28520365,  
            "fatalities": 508665  
        }, 
        {  
            "date": 20210302,  
            "positives": 28453529,  
            "fatalities": 506216  
        }, 
        {  
            "date": 20210301,  
            "positives": 28399281,  
            "fatalities": 504488  
        } 
    ]; 
    console.log(JSONToCSV(exampleJSON,  
        ['date', 'positives', 'fatalities'])); 
</script> 

这段代码可以简化为:

<script> 
    const JSONToCSV = (objArray, keys) => [ 
        keys.join(','), ...objArray.map( 
            row => keys.map(k => row[k] || '') 
                .join(','))].join('\n'); 
  
    const exampleJSON = [ 
        { 
            "date": 20210307, 
            "positives": 28756184, 
            "fatalities": 515148 
        }, 
        { 
            "date": 20210306, 
            "positives": 28714654, 
            "fatalities": 514309 
        }, 
        { 
            "date": 20210305, 
            "positives": 28654639, 
            "fatalities": 512629 
        }, 
        { 
            "date": 20210304, 
            "positives": 28585852, 
            "fatalities": 510408 
        }, 
        { 
            "date": 20210303, 
            "positives": 28520365, 
            "fatalities": 508665 
        }, 
        { 
            "date": 20210302, 
            "positives": 28453529, 
            "fatalities": 506216 
        }, 
        { 
            "date": 20210301, 
            "positives": 28399281, 
            "fatalities": 504488 
        } 
    ]; 
    console.log(JSONToCSV(exampleJSON, 
        ['date', 'positives', 'fatalities'])); 
</script> 

输出:

date, positives, fatalities
20210307, 28756184, 515148
20210306, 28714654, 514309
20210305, 28654639, 512629
20210304, 28585852, 510408
20210303, 28520365, 508665
20210302, 28453529, 506216
20210301, 28399281, 504488

从CSV转为JSON

要将CSV转为JSON,首先通过解析CSV标题识别出每个JavaScript对象的键列表,然后对于每一行CSV,向一个新的对象中添加每个键和值。

<script> 
    const CSVToJSON = csv => { 
        const lines = csv.split('\n'); 
        const keys = lines[0].split(','); 
        return lines.slice(1).map(line => { 
            return line.split(',').reduce((acc, cur, i) => { 
                const toAdd = {}; 
                toAdd[keys[i]] = cur; 
                return { ...acc, ...toAdd }; 
            }, {}); 
        }); 
    }; 
  
    const exampleCSV = ` 
            date,positives,fatalities 
            20210307,28756184,515148 
            20210306,28714654,514309 
            20210305,28654639,512629 
            20210304,28585852,510408 
            20210303,28520365,508665 
            20210302,28453529,506216 
            20210301,28399281,504488`; 
    console.log(CSVToJSON(exampleCSV)); 
</script> 

输出:

JavaScript 如何将CSV转换为JSON文件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程