【问题标题】:Convert CSV object to JSON object in Node在 Node 中将 CSV 对象转换为 JSON 对象
【发布时间】:2020-07-23 19:02:54
【问题描述】:

我正在尝试将 CSV 对象逐行转换为 JSON 对象。我不想将 CSV 文件转换为 JSON,因为我的文件有超过 400 万个对象。

另外,我正在使用 csvjson 模块,但我认为您不能将 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 []
});

【问题讨论】:

  • 而且,您需要帮助的具体问题是什么。你显示一些代码。这段代码有什么问题?
  • 如果您在 csv 上运行代码。它为每一行打印“[]”,如上所示。问题是将 csv 对象转换为 json 对象
  • 您能否显示一些 CSV 文件中的示例数据以将其转换为 minimal, reproducible example
  • 查看csvjson 的文档,我认为csvjson.toObject() 不适合这种用途。看起来csvjson.toObject() 期望获得一个包含列名和多行数据的整个 CSV 文件。我认为它不知道如何处理一行数据。我还不清楚csvjson 模块是否支持这种类型的访问。它可能必须使用流接口来完成(部分显示在文档中的最后一个代码示例中),但这需要一些实验来弄清楚如何截取每一行数据。
  • 我猜可能有更好的 csv 模块,其中包含如何逐行读取和处理巨大的 csv 数据文件的具体示例。

标签: node.js json csv npm


【解决方案1】:

要逐行处理,在我看来,您需要一个不同的 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');
});

【讨论】:

  • 这正是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 2017-06-16
  • 2016-08-03
相关资源
最近更新 更多