【问题标题】:How can I write a JSON stream to file using Node.js?如何使用 Node.js 将 JSON 流写入文件?
【发布时间】:2023-03-15 10:10:01
【问题描述】:

我想将一个完整的 JSON 对象写入一个文件。我目前正在使用

const file = fs.createWriteStream('./example.file');
var inputStream = JSON.parse(generatedData);
fs.write(inputStream+"\n");

我试图捕获的流来自Leap Motion controller frame.dump。 我尝试使用 JSON.parse()JSON.stringify() 编写对象,但它似乎只写 undefined 行。

我可能没有正确处理该对象,但我不知道如何解决它。

编辑:为了澄清,我知道如何编写 JSON 对象的单个元素,但我更愿意将整个 JSON 转储到每个新行。

【问题讨论】:

  • 上面generatedData是什么格式?
  • @Chev,根据the documentation,这将是一个 JSON 格式的字符串,但我不能说我已经检查过了,因为我不确定如何在 Node.js 中调查对象。

标签: javascript node.js json leap-motion


【解决方案1】:

generatedData 在这里已经是一个 JSON 字符串,您现在正在将其解析回一个不需要的对象。

如果你想附加到文件中,我会考虑appendFile

fs.open('./example.txt', 'a', (err, fd) => {
  if (err) throw err;
  fs.appendFile(fd, generatedData, 'utf8', (err) => {
    fs.close(fd, (err) => {
      if (err) throw err;
    });
    if (err) throw err;
  });
});

【讨论】:

  • 感谢您的回答。与 createWriteStream 相比,使用 appendFile 有什么优势?
  • 使用createWriteStream没有错,如果您连续记录更多数据并且需要保持句柄打开以保持处理内容,则更合适。如果您只是在示例中删除了 JSON.parse 就可以了。 appendFile 方便打开、编写和关闭处理程序以释放资源。但是你可以用createWriteStream 做同样的事情。
猜你喜欢
  • 2017-11-28
  • 2016-05-13
  • 2018-07-04
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多