我正在将JSON对象写入从twitter api流式传输的文件中。它们正确登录到控制台,看起来像JSON对象;但是,当我使用命令时:
fs.appendFile("./tweets.json", tweet)
写入文件的所有内容如下:
[object Object]
这里发生了什么?当我将对象tweet写入控制台时,这是输出:
{ created_at: 'Tue Mar 17 22:12:41 +0000 2015',
id: 577955743997018100,
id_str: '577955743997018112',
text:
......tons more stuff....
filter_level: 'low',
lang: 'en',
timestamp_ms: '1426639434951' }
什么是[object Object]以及为什么写这个?
答案 0 :(得分:6)
更改此行
fs.appendFile("./tweets.json", tweet);
到
fs.appendFile("./tweets.json", JSON.stringify(tweet, null, ' '));
这是因为appendFile会调用toString()
来打印您看到的内容,因此您需要将该对象转换为JSON字符串。
stringify
的后两个参数将打印JSON对象,以便您可以查看它并手动编辑它。如果您更喜欢紧凑格式,只需将它们保留下来。
答案 1 :(得分:1)
fs.appendFile
需要一个字符串。但你给它一个对象。您需要做的就是将对象转换为字符串。拨打JSON.stringify
。
fs.appendFile("./tweets.json", JSON.stringify(tweet))
如果fs.appendFile
没有收到字符串,那么它会尝试将参数转换为字符串。这很糟糕。