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

时间:2017-02-11 17:37:38

标签: json node.js file fs

我正在尝试将JSON对象写入JSON文件。代码执行没有错误,但是不是写入对象的内容,而是写入JSON文件的所有内容是:

[object Object]

这是实际写作的代码:

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

'输出'是一个JSON对象,该文件已存在。如果需要更多信息,请告诉我。

7 个答案:

答案 0 :(得分:92)

您需要对对象进行字符串化。

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

答案 1 :(得分:44)

我认为你不应该使用同步方法,异步地将数据写入文件最好也将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!");
}); 

添加了将数据写入文件的同步方法,但请考虑您的用例。 Asynchronous vs synchronous execution, what does it really mean?

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

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

答案 2 :(得分:18)

通过将第三个参数传递给stringify来使json变得可读:

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

答案 3 :(得分:0)

将数据发送到Web服务器时,数据必须为字符串(here)。您可以使用JSON.stringify()将JavaScript对象转换为字符串。 Here是一个有效的示例:

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}`);

希望它会有所帮助。

答案 4 :(得分:0)

这是一个变体,使用的是使用承诺的fs版本:

const fs = require('fs');

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

答案 5 :(得分:0)

您可以通过编写更简洁的代码或简化代码来实现。

       fs.writeFileSync(`${filePath}`, `${content}`);

其中filePath是文件目录

答案 6 :(得分:0)

我用chrome打开本地文件或网址:

const open = require('open'); // npm i open
// open('http://google.com')
open('build_mytest/index.html', {app: "chrome.exe"})