node.js没有正确地将JSON写入文件

时间:2015-03-18 02:13:48

标签: javascript json node.js

我正在将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]以及为什么写这个?

2 个答案:

答案 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没有收到字符串,那么它会尝试将参数转换为字符串。这很糟糕。