JSONオブジェクトをJSONファイルに書き込もうとしています。コードはエラーなく実行されますが、オブジェクトの内容が書き込まれる代わりに、JSONファイルに書き込まれるのは次のとおりです。
[object Object]
これは実際に書いているコードです:
fs.writeFileSync('../data/phraseFreqs.json', output)
'output'はJSONオブジェクトであり、ファイルは既に存在しています。詳細情報が必要な場合はお知らせください。
オブジェクトを文字列化する必要があります。
fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output));
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);
3番目の引数をstringify
に渡して、jsonを人間が読めるようにします。
fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output, null, 4));
Webサーバーにデータを送信する場合、データは文字列でなければなりません(ここでは)。 JavaScriptオブジェクトをJSON.stringify()
で文字列に変換することができます。 これは の例です。
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}`);
それが役立つことを願っています。