Node.js 如何将数据推送到JSON文件中的数组并保存?

Node.js 如何将数据推送到JSON文件中的数组并保存?,node.js,arrays,json,npm,node-modules,Node.js,Arrays,Json,Npm,Node Modules,所以我试图将一个数组推送到一个已经是数组格式的JSON文件中 The code im using to attempt this is: needle.get("https://bpa.st/raw/VHVQ", function(response, body){ let testlist = require('../testlist.json') let list = response.body; let listarray = list.

所以我试图将一个数组推送到一个已经是数组格式的JSON文件中

The code im using to attempt this is:

needle.get("https://bpa.st/raw/VHVQ", function(response, body){
     let testlist = require('../testlist.json') 
     let list = response.body;
     let listarray = list.split("\r\n")
     for (var i of listarray) {
     testlist.push(i);
     }
当我的应用程序运行时,testlist.json显示为:

["1", "2", "this", "is", "an", "example", "for", "stackoverflow"]
现在它似乎工作正常,就像它更新了阵列一样,但如果我检查,它没有,如果我重新启动我的应用程序,它会重置为原始的未编辑版本

testlist.json looks like this:

["1", "2"]
之后,我试图让它编辑json文件,使其看起来像这样:

["1", "2", "this", "is", "an", "example", "for", "stackoverflow"]

当您使用
require()
testlist.json
的内容导入变量
testlist
时,您正在将文件的内容加载到内存中。如果希望修改保持不变,则需要在对
testlist
变量进行更改后写回文件。否则,当程序进程退出时,所做的更改将丢失

您可以使用
fs
模块中的
writeFileSync()
方法以及
JSON.stringify()
,将
testlist
写回
testlist.JSON
文件:

const fs = require("fs");

let testlist = require("../testlist.json");

// Your code where you modify testlist goes here

// Convert testlist to a JSON string
const testlistJson = JSON.stringify(testlist);
// Write testlist back to the file
fs.writeFileSync("../testlist.json", testlistJson, "utf8");
编辑:您还应该使用
readFileSync()
方法(也来自
fs
模块)和
JSON.parse()
来执行JSON文件的初始读取,而不是
require()

//这一行
让testlist=require(“../testlist.json”);
//被替换为此行
让testlist=JSON.parse(fs.readFileSync(“../testlist.JSON”,“utf8”);

您必须使用
JSON.parse
以及
fs.readFileSync
,因为当您读取文件时,它被读取为字符串,而不是JSON对象。

我编辑它是为了显示我遇到的问题!我已经编辑了我的答案,希望能用只读解决您的问题。我还注意到我错误地使用了
fs.writeFile
,而不是
fs.writeFileSync
,所以我现在也包括了这一点。很抱歉,我遇到了另一个问题,并对其进行了编辑以显示更多内容,以便我们最终能够解决这个问题!您会收到该错误,因为在该路径上找不到该文件。您确定
testlist.json
文件位于该路径(不在同一目录中,但在您使用
。/
时在上一个目录中)。另外,关于编辑,您应该在for循环外部和之后调用
writeFileSync()
,否则您将在每次迭代中写入文件,而不是在结束时写入一次。此外,如果您有后续错误,您不应该编辑我的响应。或者使用评论,或者编辑您的原始问题(我已经为您完成了)。:)