Ecrire un objet JSON dans un fichier JSON avec fs.writeFileSync

J'essaie d'écrire un objet JSON dans un fichier JSON. Le code s'exécute sans erreurs, mais au lieu que l'objet lui-même soit écrit, tout ce qui est écrit dans le fichier JSON est:

[object Object]

C'est le code qui fait réellement l'écriture:

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

'output' est un objet JSON, et le fichier existe déjà. Veuillez me faire savoir si plus d'informations sont nécessaires.

35
demandé sur Romulus3799 2017-02-11 20:37:38

3 réponses

Je ne pense pas que vous devriez utiliser Synchronous est la bonne, Asynchronously l'écriture de données dans un fichier est mieux aussi stringify la output un object.

Remarque: Si output est une chaîne, spécifiez l'encodage. et rappelez-vous aussi les options 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!");
}); 
40
répondu akinjide 2017-02-11 17:42:38

Vous devez stringifier l'objet.

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output));
40
répondu Kamal 2017-09-22 03:16:47

Rendre json lisible par l'homme avec:

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

13
répondu Timelot 2018-01-19 05:07:55