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

IT技术 javascript node.js
2021-02-16 08:11:34

我是 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个回答

如果您希望文件是有效的 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))
})
你是对的,我没有注意到实际结果是一个数组。
2021-04-27 08:11:34
原始问题中的 results.json 包含一个数组。使用fs.readFile,我们得到一个字符串,使用 之后,我们得到一个字符串JSON.parse数组。然后我们将另一个字符串推入数组。
2021-05-06 08:11:34
json是一个数组,您可以使用.push.
2021-05-07 08:11:34
在这个例子中,“json”不是一个数组
2021-05-09 08:11:34
我投反对票,因为在短时间内多次调用且没有延迟锁定文件的情况下,这将不起作用。
2021-05-17 08:11:34

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

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!');
    });
})
由于 JSON 格式,我们必须读取数据、解析、追加,然后覆盖原始文件。
2021-04-17 08:11:34
澄清一下,我不想覆盖数据。我想向现有结果添加其他数据
2021-04-27 08:11:34
@filmplane 第一个示例在不生成有效 json 的情况下附加数据。第二个例子也追加数据,但 json 结构没有被破坏。
2021-05-04 08:11:34

我已经创建了数据。js 文件,用于维护以表格格式显示的数据。包括从用户读取数据的文本框以及如何在表格中显示通过文本框输入的数据

这并没有提供问题的答案。一旦您拥有足够的声誉,您就可以对任何帖子发表评论相反,提供不需要提问者澄清的答案-来自评论
2021-05-13 08:11:34