webentwicklung-frage-antwort-db.com.de

JSON-Objekt mit fs.writeFileSync in eine JSON-Datei schreiben

Ich versuche, ein JSON-Objekt in eine JSON-Datei zu schreiben. Der Code wird ohne Fehler ausgeführt. Statt jedoch das Objekt selbst zu schreiben, wird in die JSON-Datei nur Folgendes geschrieben:

[object Object]

Dies ist der Code, der das Schreiben tatsächlich ausführt:

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

'Ausgabe' ist ein JSON-Objekt und die Datei ist bereits vorhanden. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

50
Romulus3799

Sie müssen das Objekt stringifizieren.

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

Ich denke nicht, dass Sie Synchronous verwenden sollten, ist das Gute, Asynchronously das Schreiben von Daten in eine Datei ist besser auch die output Zeichenfolge, wenn es eine object ist. 

Hinweis: Wenn output eine Zeichenfolge ist, geben Sie die Kodierung an und merken Sie sich auch die Optionen 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!");
}); 

Eine synchrone Methode zum Schreiben von Daten in eine Datei wurde hinzugefügt. Beachten Sie jedoch Ihren Anwendungsfall. Asynchrone vs. synchrone Ausführung, was bedeutet das wirklich?

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

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

json für Menschen lesbar machen mit:

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

15
Timelot

Beim Senden von Daten an einen Webserver müssen die Daten eine Zeichenfolge sein ( hier ). Sie können ein JavaScript-Objekt mit JSON.stringify() in einen String konvertieren. Hier ist ein Arbeitsbeispiel:

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

Ich hoffe es könnte helfen.