JSON 개체를 JSON 파일에 쓰려고합니다. 코드는 오류없이 실행되지만 객체의 내용이 기록 된 대신 JSON 파일에 기록되는 모든 내용은 다음과 같습니다.
[object Object]
이것은 실제로 작성하는 코드입니다.
fs.writeFileSync('../data/phraseFreqs.json', 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);
답변
세 번째 인수를 전달하여 json을 사람이 읽을 수 있도록 만듭니다 stringify
.
fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output, null, 4));
답변
웹 서버로 데이터를 보낼 때 데이터는 문자열이어야합니다 ( 여기 ). 를 사용하여 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}`);
도움이되기를 바랍니다.
답변
다음 fs
은 promise를 사용 하는 버전을 사용하는 변형입니다 .
const fs = require('fs');
await fs.promises.writeFile('../data/phraseFreqs.json', JSON.stringify(output)); // UTF-8 is default