Преобразовать объект CSV в объект JSON в узле - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь преобразовать объект CSV в JSON объект построчно. Я не хочу конвертировать файл CSV в JSON, потому что в моем файле более 4 миллионов объектов.

Кроме того, я использую модуль csv json, но я не думаю, что вы можете конвертировать CSV объект для JSON. Я думаю, что вы можете конвертировать только CSV-файл в JSON


const lineReader = require('line-reader');
const csvjson = require("csvjson"); 

lineReader.eachLine('example.csv', function(line) {
    const options = {
        delimiter : ',' , // optional
        quote     : '"' // optional
    };

    let jsonObject= csvjson.toObject(line,options);
    console.log(jsonObject) //prints []
});

1 Ответ

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

Для построчной обработки вещей мне кажется, что вам понадобится другой модуль CSV, который поддерживает инкрементальный анализ потока и выводит фактические Javascript объекты построчно (вы хотите javascript объекты, а не JSON) ,

На NPM имеется тонна CSV-модулей, многие из которых имеют некоторый уровень поддержки потоков. Этот cvs-reader, кажется, предлагает правильные возможности и работает для меня в простой демонстрационной программе. Я уверен, что есть и другие модули с аналогичными возможностями.

Вот рабочая демонстрация cvs-reader.

const fs = require('fs');
const csvReader = require('csv-reader');

// All of these arguments are optional.
const options = { 
    skipEmptyLines: true,
    asObject: true,             // convert data to object
    parseNumbers: true, 
    parseBooleans: true, 
    trim: true 
};

const csvStream = new csvReader(options);
const readStream = fs.createReadStream('example.csv', 'utf8');

readStream.on('error', err => {
     console.log(err);
     csvStream.destroy(err);
}).pipe(csvStream).on('error', err => {
    console.error(err);
}).on('data', (data) => {
    // outputs an object containing a set of key/value pair representing a line found in the csv file.
    console.log(data);    // {firstname: "John", lastname: "Bundy", state: "CA"}
}).on('end', () => {
    console.log('done');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...