如何添加到node.js中的现有json文件

我是Node.js和JavaScript的新手。 我有一个results.json文件,我想保留一个脚本的结果运行日志,从网上拉图像。 但是,我当前的脚本只覆盖现有的结果。 如何构build或添加到results.json以便每个后续结果都logging在results.json文件中? 我希望它是有效的JSON。

这里是一般的例子:

 var currentSearchResult = someWebSearchResult var fs = require('fs'); var json = JSON.stringify(['search result: ' + currentSearchResult + ': ', null, "\t"); fs.writeFile("results.json", json); 

结果.json:

 [ "search result: currentSearchResult" ] 

如果您希望该文件是有效的JSON,则必须打开文件,parsingJSON,将新结果附加到数组,将其转换回string并再次保存。

 var fs = require('fs') var currentSearchResult = 'example' fs.readFile('results.json', function (err, data) { var json = JSON.parse(data) json.push('search result: ' + currentSearchResult) fs.writeFile("results.json", JSON.stringify(json)) }) 

你可以用Bunyan 。 那是

一个简单而快速的JSON日志库

一般来说,如果你想追加到文件,你应该使用:

 fs.appendFile("results.json", json , function (err) { if (err) throw err; console.log('The "data to append" was appended to file!'); }); 

追加文件创build文件,如果不存在。

但是,如果您想先追加JSON数据,那么读取数据之后就可以覆盖这些数据。

 fs.readFile('results.json', function (err, data) { var json = JSON.parse(data); json.push('search result: ' + currentSearchResult); fs.writeFile("results.json", JSON.stringify(json), function(err){ if (err) throw err; console.log('The "data to append" was appended to file!'); }); })