我正在尝试将JSON对象写入JSON文件。代码执行没有错误,但是不是写入对象的内容,而是写入JSON文件的所有内容是:
[object Object]
这是实际写作的代码:
fs.writeFileSync('../data/phraseFreqs.json', output)
'输出'是一个JSON对象,该文件已存在。如果需要更多信息,请告诉我。
答案 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"})