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

新手上路,请多包涵

我是 Node.js 和 JavaScript 的新手。我有一个 results.json 文件,我想保留从网络提取图像的脚本结果的运行日志。但是,我当前的脚本只会覆盖现有结果。我如何构建或添加到 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);

和 results.json:

 [
    "search result: currentSearchResult"
]

原文由 mmryspace 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 256
2 个回答

如果您希望文件是有效的 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))
})

原文由 Daniel Diekmeier 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 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!');
    });
})

原文由 user6068334 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题