【发布时间】:2018-05-26 17:10:12
【问题描述】:
我想在nodejs中将一些csv文件转换成json文件。
同时,json 中的一些属性将是数组。现在我可以像这样逐行读取 csv 文件:
{"price":1,"bedrooms":"Bedrooms (All Levels): 4"},
{"price":null,"bedrooms":"Bedrooms (Above Grade): 4"},
{"price":null,"bedrooms":"Master Bedroom: 21x15"},
{"price":null,"bedrooms":"Master Bedroom Bath: Full"},
{"price":null,"bedrooms":"2nd Bedroom: 14x13"},
{"price":null,"bedrooms":"3rd Bedroom: 15x14"},
{"price":null,"bedrooms":"4th Bedroom: 15x12"}
但我想得到这样的东西:
`{"price":1,"bedrooms":["Bedrooms (All Levels): 4","Bedrooms (Above
Grade): 4","Master Bedroom: 21x15","Master Bedroom Bath: Full","2nd
Bedroom: 14x13","3rd Bedroom: 15x14","4th Bedroom: 15x12"]}`
有人可以指出一些方法吗?我尝试了诸如 fast-csv、csv-parse 之类的东西。但无法将同一字段的值合并(推送或附加)到一个字段中作为数组。 谢谢。
我现在完成的代码:
var fs = require('fs');
var csv = require('fast-csv');
var stream = fs.createReadStream("../../HouseDataDev01.csv");
csv
.fromStream(stream, {columns:true, ignoreEmpty:true, headers :
["price","bedrooms"]})
.on("data", function(data){
// console.log(data);
})
.on("end", function(){
console.log("done");
});
===========
我想出了一个主意,也许我可以创建一个对象
var NewHouse = require('../models/NewHouse.js');
//NewHouse is a schema I created before to store the csv data
var test = new NewHouse;
这样我就可以像这样使用测试对象了:
.on("data", function(data){
for(i in test){
test.i.push(data[index];
}
但我发现测试中还有许多其他属性,例如:$__reset、$__dirty、$__setSchema
如何编写这个循环?
【问题讨论】: