【问题标题】:CSV to JSON using NodeJS使用 NodeJS 将 CSV 转换为 JSON
【发布时间】:2015-12-20 10:57:02
【问题描述】:

我想使用 NodeJS 将 CSV 文件转换为 JSON 对象。问题是我的 CSV 文件托管在一个特殊的 URL 上。

网址:My CSV here

var fs = require("fs");
var Converter = require("csvtojson").Converter;
var fileStream = fs.createReadStream("myurl");
var converter = new Converter({constructResult:true});
converter.on("end_parsed", function (jsonObj) {
   console.log(jsonObj);
});
fileStream.pipe(converter);

问题:

Error: ENOENT, open 'C:\xampp\htdocs\GestionDettes\http:\www.banque-france.fr\fileadmin\user_upload\banque_de_france\Economie_et_Statistiques\Changes_et_Taux\page3_quot.csv'
at Error (native)

编辑#1:

Request.get(myurl, function (error, Response, body) {
  var converter = new Converter({
    constructResult: true,
    delimiter: ';'
  });
  converter.fromString(body,function(err, taux){
    console.log(taux); // it works
  });
});

【问题讨论】:

  • 有什么问题?您不能使用 http 模块来请求 CSV 文件吗?
  • 在我的帖子中查看Issue
  • 你需要使用http模块来请求CSV文件,而不是fs模块
  • 好的,所以它适用于request.get(),但可以删除body 结果的前5行,它是CSV的头部,我不需要它..(见编辑#1)
  • 你必须通过使用的行分隔符来分割字符串,然后删除你不需要的行

标签: json node.js fs


【解决方案1】:

我只是在一个模块中以不同的数据格式在不同的协议上读写。我使用request获取http资源。

如果你想看看alinex-datastore。使用这个模块,它应该像这样工作:

const DataStore = require('@alinex/datastore').default;

async function transform() {
    const ds = new DataStore('http://any-server.org/my.csv');
    await ds.load();
    await ds.save('file:/etc/my-app.json');
}

应该可以的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 2015-08-23
    • 2016-08-03
    • 2019-02-16
    • 1970-01-01
    • 2018-01-04
    • 2021-08-29
    • 2023-04-02
    相关资源
    最近更新 更多