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

Posted

技术标签:

【中文标题】如何添加到 node.js 中的现有 json 文件【英文标题】:How do I add to an existing json file in node.js 【发布时间】:2016-07-05 17:15:22 【问题描述】:

我是 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"
]

【问题讨论】:

How to append to a file in Node?的可能重复 您希望生成的文件包含有效的 json 吗?如果是这样,仅附加到文件是不够的。 @KevinB 是的,那将是理想的,但老实说,我不确定 append 是正确的术语,所以我编辑了我的问题。 @filmplane 你找到解决方案了吗? 【参考方案1】:

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

【讨论】:

json是一个数组,您可以使用.push将新项目附加到数组中。 在这个例子中,“json”不是一个数组 原问题中的 results.json 包含一个数组。使用fs.readFile,我们得到一个字符串,在JSON.parse 之后,我们得到一个字符串数组。然后我们将另一个字符串推送到数组中。 你说得对,我没有注意到实际结果是一个数组。 我投反对票,因为这在短时间内多次调用且锁定文件没有延迟的情况下不起作用。【参考方案2】:

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

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

【讨论】:

澄清一下,我不想覆盖数据。我想在现有结果中添加其他数据 @filmplane 第一个示例附加数据而不生成有效的 json。第二个例子也追加数据,但 json 结构没有被破坏。 由于JSON格式,我们必须读取数据,解析,追加,然后覆盖原始文件。【参考方案3】:

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

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于如何添加到 node.js 中的现有 json 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从node.js中的mysql获取最近添加的重新编码ID

如何使用 node.js 将 EXCEL 文件数据读取到 json

node.js怎么往文本文档中写入数据

使用现有 JSON 文件,如何将此数据上传到 BigQuery 并使用 JSON 文件中的数据计算新字段?

验证表数据库(sql),node.js中的现有电子邮件

如何在 Node.js 的一个 json 中附加两个查询结果