web-dev-qa-db-fra.com

Écriture d'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 erreur, mais au lieu d'écrire l'objet, tout ce qui est écrit dans le fichier JSON est:

[object Object]

C'est le code qui écrit réellement:

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

'output' est un objet JSON et le fichier existe déjà. S'il vous plaît laissez-moi savoir si plus d'informations sont nécessaires.

50
Romulus3799

Vous devez stringifier l'objet.

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output));
71
Kamal

Je ne pense pas que vous devriez utiliser Synchronous c'est bien, Asynchronously écrire des données dans un fichier vaut mieux aussi stringifier la output si c'est une object

Remarque: Si output est une chaîne, spécifiez le codage et mémorisez 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!");
}); 

Ajout de la méthode synchrone pour écrire des données dans un fichier, mais veuillez considérer votre cas d'utilisation. Exécution asynchrone vs synchrone, qu'est-ce que cela signifie vraiment?

const fs = require('fs');
const content = JSON.stringify(output);

fs.writeFileSync('/tmp/phraseFreqs.json', content);
43
akinjide

rendre json lisible avec:

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

15
Timelot

Lors de l'envoi de données à un serveur Web, les données doivent être une chaîne ( ici ). Vous pouvez convertir un objet JavaScript en une chaîne avec JSON.stringify(). Ici est un exemple de travail:

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}`);

J'espère que ça pourrait aider.