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

fil*_*ane 13 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);
Run Code Online (Sandbox Code Playgroud)

而结果.json:

[
    "search result: currentSearchResult"
]
Run Code Online (Sandbox Code Playgroud)

Dan*_*ier 17

如果你想要的文件是有效的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))
})
Run Code Online (Sandbox Code Playgroud)

  • 我投反对票,因为这在短时间内多次调用且不延迟锁定文件的情况下不起作用。 (4认同)
  • `json`是一个数组,您可以使用`.push`将新项追加到数组中. (2认同)
  • 在此示例中,“ json”不是数组 (2认同)

小智 9

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

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

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

但是,如果您想先附加 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!');
    });
})
Run Code Online (Sandbox Code Playgroud)