fs.writeFileSync를 사용하여 JSON 파일에 JSON 객체 쓰기 JSON 파일에 쓰려고합니다. 코드는

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