【问题标题】:How to convert JSON to CSV and then save to computer as CSV file如何将 JSON 转换为 CSV,然后作为 CSV 文件保存到计算机
【发布时间】:2020-07-13 23:35:23
【问题描述】:

我目前正在尝试从 API 中提取 json 数据,使用 json2csv node.js 模块将其转换为 csv,然后将数据作为 csv 文件保存在我的笔记本电脑上。但是,当我运行脚本时,什么也没有发生。

然后,json 数据的格式类似于以下数据变量:

const apiDataPull = postDataRequest()
   .then(data => {
      data = [
         {
            'day': '*date*',
            'revenue': '*revenue value*'
         }
      ]

这是将数据转换为csv并下载它,这似乎是问题出现的地方:

apiDataPull.then(data => {

   json2csv({
      data: data,
      fields: ['day', 'revenue', 'totalImpressions', 'eCPM']
   },
   function(err, csv) {
      if (err) console.log(err);
      fs.writeFile('pubmaticData.csv', csv, function(err){
         if (err) throw err;
         console.log('File Saved!')
      });
   });

});

从 API 中提取了数据,但没有保存。我什至不确定它是否已正确转换为 csv。

【问题讨论】:

    标签: node.js json csv json2csv


    【解决方案1】:

    你可以使用这个 npm 包 - csv-stringify。 https://github.com/adaltas/node-csv-stringify

    //Load HTTP module
    const http = require("http");
    var stringify = require('csv-stringify');
    const fs = require('fs');
    const hostname = '127.0.0.1';
    const port = 3000;
    //Create HTTP server and listen on port 3000 for requests
    const server = http.createServer(async (req, res) => {        
    stringify(jsonObject, {header:true}, function(err, output) {
            fs.writeFile('formatted_json.csv', output, 'utf8', function(err) {
                if (err) {
                    console.log('Some error occured - file either not saved or corrupted file saved.');
                } else {
                    console.log('It\'s saved!');
                }
            });
        });
    
    });
    
    //listen for request on port 3000, and as a callback function have the port listened on logged
    server.listen(port, hostname, () => {
        console.log(`Server running at http://${hostname}:${port}/`);
    });
    

    这应该对您有所帮助。创建此文件 - 将其命名为 index.js 确保已安装 node 和 npm,并在同一目录中运行

    npm install
    npm install csv-stringify
    node index.js
    

    在浏览器中打开 localhost:3000,您将看到在 index.js 所在的同一目录中创建了 formatted_json.csv。希望这可以帮助!

    【讨论】:

      【解决方案2】:

      您可能没有开始承诺,而且您似乎没有正确使用 json2csv。

      看看这个例子:

      let json2csv = require("json2csv");
      let fs = require("fs");
      
      apiDataPull = Promise.resolve([
          {
              'day': '*date*',
              'revenue': '*revenue value*'
          }]).then(data => {
          return json2csv.parseAsync(data, {fields: ['day', 'revenue', 'totalImpressions', 'eCPM']})
      }).then(csv => {
          fs.writeFile('pubmaticData.csv', csv, function (err) {
              if (err) throw err;
              console.log('File Saved!')
          });
      });
      

      保存的文件是:

      "day","revenue","totalImpressions","eCPM"
      "*date*","*revenue value*",,
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-11
        • 2019-12-01
        • 2019-02-23
        • 2017-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多