【发布时间】:2014-03-25 10:55:00
【问题描述】:
我已经在 stackoverflow / google 上搜索了这个,但似乎无法弄清楚。
我正在抓取给定 URL 页面的社交媒体链接,该函数返回一个带有 URL 列表的对象。
当我尝试将此数据写入另一个文件时,它会以[object Object] 的形式输出到文件中,而不是预期的:
['https://twitter.com/#!/101Cookbooks',
'http://www.facebook.com/101cookbooks']
就像我 console.log() 结果一样。
这是我在 Node 中读取和写入文件的悲伤尝试,尝试读取每一行(url)并通过函数调用request(line, gotHTML) 输入:
fs.readFileSync('./urls.txt').toString().split('\n').forEach(function (line){
console.log(line);
var obj = request(line, gotHTML);
console.log(obj);
fs.writeFileSync('./data.json', obj , 'utf-8');
});
供参考——gotHTML 函数:
function gotHTML(err, resp, html){
var social_ids = [];
if(err){
return console.log(err);
} else if (resp.statusCode === 200){
var parsedHTML = $.load(html);
parsedHTML('a').map(function(i, link){
var href = $(link).attr('href');
for(var i=0; i<socialurls.length; i++){
if(socialurls[i].test(href) && social_ids.indexOf(href) < 0 ) {
social_ids.push(href);
};
};
})
};
return social_ids;
};
【问题讨论】:
-
[object Object]是一个对象toString。如果您想要对象的表示,请使用JSON.stringify。 -
小心
JSON.stringify。使用数组是安全的,但是当对象具有循环引用时,它将失败 (see this topic)。util模块处理循环引用。
标签: javascript node.js file-io