Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';我的CSV不是在没有任何数据的情况下编写的吗?_Javascript_Json_Node.js_Csv - Fatal编程技术网

Javascript 为什么不是';我的CSV不是在没有任何数据的情况下编写的吗?

Javascript 为什么不是';我的CSV不是在没有任何数据的情况下编写的吗?,javascript,json,node.js,csv,Javascript,Json,Node.js,Csv,我正在编写一个函数,它接收我在tshirt网站上执行的一次网络搜索的结果 每件tshirt都存储为一个对象,包含标题、价格、imgUrl、URL和时间。每个对象都存储在一个数组中,包含所有T恤 在这个函数中,我首先将数组转换为JSON字符串。我将此记录在控制台日志中,只是为了检查是否正确执行了此操作 然后,如果文件夹还不存在,我会创建一个名为data的文件夹 我列出了CSV所需的字段 然后通过传入数据(JSON字符串)和文件路径来编写文件,并将其设置为覆盖 现在,当我调用该函数时,它会执行所有需

我正在编写一个函数,它接收我在tshirt网站上执行的一次网络搜索的结果

每件tshirt都存储为一个对象,包含标题、价格、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();

数据对象具有小写键。您的
字段
数组尚未打开

var fields = ['Title', 'Price', 'ImageURl', 'URL', 'Date'];

JavaScript区分大小写。字段名必须与对象键匹配。

您的数据对象具有小写键。您的
字段
数组尚未打开

var fields = ['Title', 'Price', 'ImageURl', 'URL', 'Date'];

JavaScript区分大小写。字段名必须与对象键匹配。

可能无法将字段与对象属性匹配。 我看到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' },
 ...
];
您还可以通过传递字段名使标题变得漂亮:


它可能无法将字段与对象属性匹配。 我看到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' },
 ...
];
您还可以通过传递字段名使标题变得漂亮:


嘿,我更新了问题中的代码,但由于某种原因仍然不起作用?@bloppit尝试删除json.stringify并将json对象tshirtArray直接传递给json2csv函数。Dang,是的,你是对的。虽然这没有道理。我试着传入带有如下属性的tshirtaray
'Title'
Title
。我认为这很奇怪,因为JSON需要属性键加引号吗?@bloppit我想问题在于JSON.stringify将整个对象转换为JSON字符串,而不仅仅是引用对象属性。JSON.stringify({x:5});/'{“x”:5}'嘿,我更新了问题中的代码,但由于某种原因仍然无法工作?@bloppit尝试删除json.stringify并将json对象tshirtArray直接传递给json2csv函数。Dang,是的,你是对的。虽然这没有道理。我试着传入带有如下属性的tshirtaray
'Title'
Title
。我认为这很奇怪,因为JSON需要属性键加引号吗?@bloppit我想问题在于JSON.stringify将整个对象转换为JSON字符串,而不仅仅是引用对象属性。JSON.stringify({x:5});/'{“x”:5}'嘿,我更新了问题中的代码,出于某种原因仍然不工作?嘿,我更新了问题中的代码,出于某种原因仍然不工作?