📜  将 JSON 文件转换为 CSV 文件并使用 Node.js 显示数据

📅  最后修改于: 2022-05-13 01:56:23.760000             🧑  作者: Mango

将 JSON 文件转换为 CSV 文件并使用 Node.js 显示数据

存储数据的方式有很多,以便更好地理解个人目的,在少数情况下,JSON 文件会更适合少数情况,CSV 文件,还有很多其他类型以及 XML 等。在本文中,我们将 JSON 文件数据转换为 CSV 文件数据,并通过 Node.js 显示。

JSON 代表 JavaScript 对象表示法。它是一种基于文本的数据交换格式,用于维护数据的结构。 JSON 是 JSON 中 XML 数据交换格式的替代品。与 XML 相比,数据结构很容易。它支持数组和对象等数据结构以及在服务器上快速执行的 JSON 文档。它也是一种源自 JavaScript 的与语言无关的格式。

CSV(逗号分隔值)是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。 CSV 文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。使用逗号作为字段分隔符是此文件格式名称的来源。

将数据存储到 CSV:有一个csv-writer是一个用于将数据存储到 CSV 的模块。

句法 :

csv-writer(path,header);
  • path:下载 CSV 文件的文件路径。
  • header: CSV 文件中的列名,就像字典一样。

方法:

  • 安装后导入 csv-writer。
  • 为它创建一个对象。
  • 在常量变量中提及每列的值
  • 使用 csvWriter.writeRecords(results) 通过csv_writer_object.writeRecords(constant variable)将数据写入 CSV

按照以下步骤将 JSON 文件转换为 CSV 文件:

  • 安装依赖:
    npm install csv-writer
  • 例子

    code1.js
    // Import csv-writer
    import csvwriter from 'csv-writer'
      
    var createCsvWriter = csvwriter.createObjectCsvWriter
      
    // Passing the column names intp the module
    const csvWriter = createCsvWriter({
      
      // Output csv file name is geek_data
      path: 'geek_data.csv',
      header: [
      
        // Title of the columns (column_names)
        {id: 'id', title: 'ID'},
        {id: 'name', title: 'NAME'},
        {id: 'age', title: 'AGE'},
      ]
    });
      
    // Values for each column through an array
    const results = [
      {
        id: '7058',
        name: 'Sravan Kumar Gottumukkala',
        age: 22
      }, {
        id: '7004',
        name: 'Sudheer',
        age: 29
      }, {
        id: '7059',
        name: 'Radha',
        age: 45
      },{
        id: '7060',
        name: 'vani',
        age: 34
      }
        
    ];
    // Writerecords function to add records
    csvWriter
      .writeRecords(results)
      .then(()=> console.log('Data uploaded into csv successfully'));


    Code1.js
    // Importing csv-parser into csvdata
    import csvdata from 'csv-parser'
      
    // Importing csv-parser into fsdata
    const fsdata = require('fs');
      
    // Reading csv data row wise from geek_data csv file
    fsdata.createReadStream('geek_data.csv')
      .pipe(csvdata())
      .on('data', (row) => {
      
        // Display data row by row
        console.log(row);
      })
      .on('end', () => {
        console.log('success');
      });


    code1.js
    // Import package csvjson
    import csvjson from 'csvjson'
      
    // Import fs package(file system) 
    // for read and write files
    import fs from 'fs'
    const readFile = fs.readFile;
    const writeFile = fs.writeFile;
      
    // Reading json file(filename -data.json)
    readFile('./data.json', 'utf-8', (err, fileContent) => {
        if (err) {
            // Doing something to handle the error or just throw it
            console.log(err); 
            throw new Error(err);
        }
      
        // Convert json to csv function
        const csvData = csvjson.toCSV(fileContent, {
            headers: 'key'
        });
      
        // Write data into csv file named college_data.csv
        writeFile('./college_data.csv', csvData, (err) => {
            if(err) {
                // Do something to handle the error or just throw it
                console.log(err); 
                throw new Error(err);
            }
            console.log('Data stored into csv file successfully');
        });
    });


  • 要开始转换,请运行以下命令。
    node code1.js
  • 输出:

以 CSV 格式显示数据:有时我们必须在将 JSON 转换为 CSV 文件之前在服务器上显示 JSON 文件以检查数据。

方法:

  1. 导入 fs 和 csv-parser 模块。
  2. 为这两个(fsdata 和 csvdata)创建对象。
  3. 通过传递csv-parser对象,使用带有管道方法的createReadStream方法创建数据流。

句法:

fs_object.createReadStream('file_name.csv'),pipe(csv_parser_object())
  • 例子:

    Code1.js

    // Importing csv-parser into csvdata
    import csvdata from 'csv-parser'
      
    // Importing csv-parser into fsdata
    const fsdata = require('fs');
      
    // Reading csv data row wise from geek_data csv file
    fsdata.createReadStream('geek_data.csv')
      .pipe(csvdata())
      .on('data', (row) => {
      
        // Display data row by row
        console.log(row);
      })
      .on('end', () => {
        console.log('success');
      });
    
  • 要显示 JSON 数据,请运行以下命令。
    node code1.js
  • 输出:

将 JSON 转换为 CSV:在第一种方法中,我们在脚本中传递 JSON 数据,但我们也可以附加之前创建的 JSON 文件。

  1. 它用于以更少的时间处理数据。
  2. 它类似于数组结构。
  3. JSON 是人类可读和可写的,它是基于轻量级文本的数据交换格式
  4. 虽然它是从 JavaScript 的一个子集派生的,但它是独立于语言的。
  5. 因此,用于生成和解析 JSON 数据的代码可以用任何其他编程语言编写。

句法:

csvjson_object.toCSV(fileContent);

方法 :

  1. 在 Node.js 中定义模块
  2. 使用 fs 包读取文件
  3. 使用 toCSV 方法将 JSON 转换为 CSV
  4. 使用 fs 包将此数据写入 CSV 文件

按照以下步骤将 JSON 文件转换为 CSV 文件:

  • 安装依赖:

    npm install csvjson fs
  • 例子:

    code1.js

    // Import package csvjson
    import csvjson from 'csvjson'
      
    // Import fs package(file system) 
    // for read and write files
    import fs from 'fs'
    const readFile = fs.readFile;
    const writeFile = fs.writeFile;
      
    // Reading json file(filename -data.json)
    readFile('./data.json', 'utf-8', (err, fileContent) => {
        if (err) {
            // Doing something to handle the error or just throw it
            console.log(err); 
            throw new Error(err);
        }
      
        // Convert json to csv function
        const csvData = csvjson.toCSV(fileContent, {
            headers: 'key'
        });
      
        // Write data into csv file named college_data.csv
        writeFile('./college_data.csv', csvData, (err) => {
            if(err) {
                // Do something to handle the error or just throw it
                console.log(err); 
                throw new Error(err);
            }
            console.log('Data stored into csv file successfully');
        });
    });
    
  • 要开始转换,请运行以下命令。
    node code1.js
  • 输出: