2017-02-11 11 views
18

Я пытаюсь записать объект JSON в файл JSON. Код выполняется без ошибок, но вместо того, чтобы объект сам писались, все, что получает записывается в файл JSON является:Запись объекта JSON в файл JSON с помощью fs.writeFileSync

[object Object] 

Это код, который фактически делает запись:

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

' output 'является объектом JSON, и файл уже существует. Пожалуйста, дайте мне знать, если требуется дополнительная информация.

+6

fs.writeFileSync ('../ данных/phraseFreqs.json', JSON.stringify (выход)) – Daniel

ответ

27

Я не думаю, что вы должны использовать Synchronous это хорошо, Asynchronously записи данных в файл лучше также stringify в 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!"); 
}); 
+0

Если это делается в коротком сценарии или что-то еще, синхронно. Если это часть запроса сервера или что-то еще, тогда он должен быть асинхронным. –

+0

Не обязательно, связанные процессы ввода/вывода должны выполняться асинхронно, но в зависимости от сложности короткого скрипта вы можете выбрать синхронный. – akinjide

+0

Это не ответ на вопрос. –

14

Вы должны stringify объект.

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

Добро пожаловать в SO, прежде чем ответить на вопрос, попробуйте просмотреть существующий ответ. Если ваш ответ уже был предложен, верните ответ вместо этого. См. [Руководство сообщества] (https://stackoverflow.com/help/how-to-answer) для написания хорошего ответа. – LightBender

-1

Я хотел бы добавить к ответу akinjide.

Я считаю, что вы могли бы озадачить это, потому что console.log (JSON_Object) напечатал строку JSON на консоли. Но когда вы пишете то же самое в файл, он пишет [object Object]. Это связано с тем, что console.log (object) конвертирует объект JSON в строку неявно, прежде чем писать его на консоль, тогда как FS.writeFile() не делает этого. Надеюсь, это поможет вашему пониманию.

Ссылка: Write JSON to File in Node.js - Node FS

2

делают JSON чтения человеком с:

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