使用 fs.writeFileSync 将 JSON 对象写入 JSON 文件

我试图将一个 JSON 对象写入一个 JSON 文件。代码执行时没有错误,但是写入 JSON 文件的内容不是对象的内容,而是:

[object Object]

这就是实际执行写作的代码:

fs.writeFileSync('../data/phraseFreqs.json', output)

“ output”是一个 JSON 对象,该文件已经存在。如果需要更多信息,请告诉我。

173676 次浏览

我不认为你应该使用同步方法,异步写数据到一个文件也更好的字符串化 output,如果它是一个 object

注意: 如果 output是一个字符串,那么指定编码并记住 flag选项:

const fs = require('fs');
const content = JSON.stringify(output);


fs.writeFile('/tmp/phraseFreqs.json', content, 'utf8', function (err) {
if (err) {
return console.log(err);
}


console.log("The file was saved!");
});

增加了将数据写入文件的同步方法,但是请考虑您的用例

const fs = require('fs');
const content = JSON.stringify(output);


fs.writeFileSync('/tmp/phraseFreqs.json', content);

你需要把对象串起来。

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output));

通过将第三个参数传递给 stringify,使 json 具有可读性:

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output, null, 4));

当向 Web 服务器发送数据时,数据必须是字符串(给你)。可以使用 JSON.stringify()将 JavaScript 对象转换为字符串。 这里 是一个实例:

var fs = require('fs');


var originalNote = {
title: 'Meeting',
description: 'Meeting John Doe at 10:30 am'
};


var originalNoteString = JSON.stringify(originalNote);


fs.writeFileSync('notes.json', originalNoteString);


var noteString = fs.readFileSync('notes.json');


var note = JSON.parse(noteString);


console.log(`TITLE: ${note.title} DESCRIPTION: ${note.description}`);

希望能有所帮助。

下面是一个变体,使用了使用承诺的 fs版本:

const fs = require('fs');


await fs.promises.writeFile('../data/phraseFreqs.json', JSON.stringify(output)); // UTF-8 is default