我正在编写一个函数,它接收我在T恤网站上执行的网页搜索结果。
每个T恤都作为对象存储,包含标题,价格,imgUrl,URL和时间。这些对象中的每一个都存储在一个数组中,包含所有的T恤。
在这个函数中,我首先将数组转换为JSON字符串。我控制台记录这个,只是为了检查这是否正确完成。
然后我创建了一个名为data的文件夹。
我列出了我想要的CSV字段。
然后我通过传入我的数据(JSON字符串),文件路径并将其设置为覆盖来编写文件。
现在,当我调用该函数时,它会完成它所需要的所有操作,除非我打开CSV文件时,列标题正确,但表格完全为空。
有什么想法吗?我非常感谢您的意见,谢谢!
代码如下:
var json2csv = require('json2csv');
var fs = require('fs');
function convertJson2Csv(){
//The scraper should generate a folder called `data` if it doesn’t exist.
var dir ='./data';
if(!fs.existsSync(dir)){
fs.mkdirSync(dir);
};
var tshirtArray = [ {
Title: 'Mike the Frog Shirt, Orange',
Price: '$25',
ImageURL: 'img/shirts/shirt-108.jpg',
URL: 'http://shirts4mike.com/shirt.php?id=105',
Date: 'September 23rd 2016, 12:28:49 am'
},{
Title: 'Logo Shirt, Teal',
Price: '$20',
ImageURL: 'img/shirts/shirt-107.jpg',
URL: 'http://shirts4mike.com/shirt.php?id=105',
Date: 'September 23rd 2016, 12:28:49 am'
},{
Title: 'Logo Shirt, Gray',
Price: '$20',
ImageURL: 'img/shirts/shirt-106.jpg',
URL: 'http://shirts4mike.com/shirt.php?id=105',
Date: 'September 23rd 2016, 12:28:49 am'
},{
Title: 'Mike the Frog Shirt, Yellow',
Price: '$25',
ImageURL: 'img/shirts/shirt-105.jpg',
URL: 'http://shirts4mike.com/shirt.php?id=105',
Date: 'September 23rd 2016, 12:28:50 am'
}];
var tshirtJson = JSON.stringify(tshirtArray);
var fields = ['Title', 'Price', 'ImageURL', 'URL', 'Date'];
var csv = json2csv({ data: tshirtJson, fields: fields });
console.log(csv);
fs.writeFile('./data/file.csv', csv, {overwrite: true}, function(err) {
if (err) throw err;
console.log('file saved');
});
};
convertJson2Csv();
答案 0 :(得分:1)
您的数据对象具有小写键。您的fields
数组没有。
var fields = ['Title', 'Price', 'ImageURl', 'URL', 'Date'];
JavaScript区分大小写。字段名称必须与对象键匹配。
答案 1 :(得分:1)
可能无法将字段与对象属性匹配。 我在tshirtArray对象上看到你有一个' img'财产和字段是' imageURl'。
尝试将对象更改为:
var tshirtArray = [ { 'Price': '$20',
'ImageURl': 'img/shirts/shirt-107.jpg',
'Title': 'Logo Shirt, Teal',
'URL': 'http://shirts4mike.com/shirt.php?id=105',
'Date': 'September 22nd 2016, 11:17:48 pm' },
...
];
你也可以通过传递字段名来使标题变得漂亮: