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

时间:2016-03-18 19:46:51

标签: javascript node.js

我是Node.js和JavaScript的新手。我有一个results.json文件,我希望保留一个运行的结果日志,该脚本来自从Web上提取图像的脚本。但是,我当前的脚本只会覆盖现有结果。如何构建或添加results.json以便每个后续结果都记录在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"
]

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:1)

通常,如果要附加到文件,则应使用:

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

如果不存在,则附加文件创建文件。

但是,如果你想首先附加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!');
    });
})

答案 2 :(得分:0)

您可以使用Bunyan。那是

  

简单快速的JSON日志记录库