Как преобразовать JSON в CSV, а затем сохранить на компьютер в виде файла CSV - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я пытаюсь получить данные json и API, преобразовать их в csv с помощью модуля json2csv node.js, а затем сохранить данные в виде файла 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.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вы можете использовать этот пакет 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 Убедитесь, что у вас установлен узел & npm, и запустите в том же каталоге

npm install
npm install csv-stringify
node index.js

go, откройте в браузере localhost: 3000 и вы см. formatted_ json .csv, созданный в том же каталоге, где находится индекс. js. Надеюсь это поможет!

0 голосов
/ 02 апреля 2020

Возможно, вы не запускаете обещания, и похоже, что вы не используете 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*",,
...