繁体   English   中英

Node.JS / Express.JS:将数据从CSV文件正确转换为JSON

[英]Node.JS / Express.JS : Convert properly data from CSV file to JSON

我打算从CSV文件加载数据,并将其作为JSON数据发送到Express Router

我的CSV看起来像这样:

  • 没有标题
  • 我的行分隔符只是“ / n”
  • 我的值在“”下

    “ 2171106”,“ 2017-07-03 00:27:24”,“法国”,“ 3”,“桌面”,“ Mac”,“ Firefox”,“ 2170248”,“ 77.98”“ 800309”,“ 2017 -07-03 03:23:21“,”法国“,” 9“,”桌面“,” GNU / Linux“,” Safari“,” 2170296“,” 85.39“” 805789“,” 2017-07-03 03:34:32“,”法国“,” 1“,”平板电脑“,” iOS“,”移动Safari“,” 2170299“,” 61.49“” 2171167“,” 2017-07-03 04:42:47 “,” France“,” 1“,”台式机“,” Windows“,” Chrome“,” 2170314“,” 39.99“” 2171170“,” 2017-07-03 04:50:02“,”法国“, “ 1”,“台式机”,“ Windows”,“ Chrome”,“ 2170320”,“ 20.89”“ 838601”,“ 2017-07-03 05:48:38”,“法国”,“ 1”,“智能手机“,” iOS“,” Mobile Safari“,” 2170323“,” 66.88“” 2171173“,” 2017-07-03 06:09:28“,”法国“,” 1“,”桌面“,” Windows“ ,“ Microsoft Edge”,“ 2170407”,“ 57.77”“ 1659566”,“ 2017-07-03 06:28:08”,“法国”,“ 1”,“智能手机”,“ Android”,“ Chrome移动版” ,“ 2170416”,“ 32.99”“ 835619”,“ 2017-07-03 06:46:00”,“法国”,“ 4”,“桌面”,“ Windows”,“ Firefox”,“ 2170419”,“ 203.93“” 773872“,” 2017-07-03 06:51:14“,”法国“,” 8“,”平板电脑“,” iOS“,”移动Safari“,” 2170422“,” 285.79“” 2171241“ ,“ 2017-07-03 06:54:30”,“法国”,“ 1”,“桌面”, “ Mac”,“ Safari”,“ 2170425”,“ 29.49”“ 2171238”,“ 2017-07-03 07:02:48”,“法国”,“ 1”,“桌面”,“ Windows”,“ Firefox “,” 2170434“,” 49.95“” 1570588“,” 2017-07-03 07:08:09“,”法国“,” 1“,”桌面“,” Windows“,” Microsoft Edge“,” 2170437“ ,“ 61.06”“ 2111374”,“ 2017-07-03 07:08:21”,“英国”,“ 1”,“平板电脑”,“ iOS”,“移动Safari”,“ 2170440”,“ 36.58” “ 1604941”,“ 2017-07-03 07:18:38”,“法国”,“ 2”,“平板电脑”,“ iOS”,“移动Safari”,“ 2170452”,“ 30.89”“ 2095884”,“ 2017-07-03 07:25:34“,”法国“,” 1“,”平板电脑“,” iOS“,”移动Safari“,” 2170458“,” 65.79“” 2171259“,” 2017-07-03 07:26:48“,”法国“,” 1“,”桌面“,” Windows“,” Firefox“,” 2170461“,” 62.67“” 860366“,” 2017-07-03 07:30:46“ ,“法国”,“ 1”,“台式机”,“ Windows”,“ Chrome”,“ 2170464”,“ 137.67”

为了更好地显示它,这里是:

在此处输入图片说明 我只想将此数据解析为一个对象,并在express中将其作为json发送。

我使用了几个库: csvjson,csvtojson,papaparse ...但是每次转换都出问题了。

这是我的服务器代码:

var express = require("express");
var app     = express();
var path    = require("path");
var fs = require('fs');
var Converter  = require("csvtojson").Converter;

var fileStream = fs.createReadStream("data.csv");
var jsonData;
//new converter instance
var converter = new Converter({constructResult:true});

//end_parsed will be emitted once parsing finished
converter.on("end_parsed", function (jsonObj) {
    jsonData = jsonObj
});
fileStream.pipe(converter);

app.get("/list",function(req,res){
    res.json(jsonData);
});

app.listen(3000);
console.log("Running at Port 3000");

运行时,转换出错,它显示如下数据: 在此处输入图片说明

如您所见,这是完全错误的:例如,这是第一个输出元素: 在此处输入图片说明 几乎所有的库都以相同的错误方式对其进行转换,我认为我的代码中缺少配置 (列表可能包含表格)

有什么建议么 ??

从csvtojson API文档:

noheader:表示csv数据没有标题行,第一行是数据行。 默认为false。

因此,也许在您的Converter构造中添加noheader:true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM