使用Node.js在JSON文件中写入/添加数据

我正在尝试使用节点从循环数据中写入JSON文件,例如:

let jsonFile = require('jsonfile');

for (i = 0; i < 11; i++) {

jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);

}

loop.json中的outPut是:

id :1 square : 1

但是我想要这样的输出文件(如下),而且如果我再次运行该代码,它应该将该新输出添加为相同的现有JSON文件中的元素:

{

"table":[

{

"Id ":1,

"square ":1

},

{

"Id ":2,

"square ":3

},

{

"Id ":3,

"square ":9

},

{

"Id ":4,

"square ":16

},

{

"Id ":5,

"square ":25

},

{

"Id ":6,

"square ":36

},

{

"Id ":7,

"square ":49

},

{

"Id ":8,

"square ":64

},

{

"Id ":9,

"square ":81

},

{

"Id ":10,

"square ":100

}

]

}

我想使用第一次创建的相同文件,但是每当我运行该代码时,新元素都应添加到该文件中

const fs = require('fs');

let obj = {

table: []

};

fs.exists('myjsonfile.json', function(exists) {

if (exists) {

console.log("yes file exists");

fs.readFile('myjsonfile.json', function readFileCallback(err, data) {

if (err) {

console.log(err);

} else {

obj = JSON.parse(data);

for (i = 0; i < 5; i++) {

obj.table.push({

id: i,

square: i * i

});

}

let json = JSON.stringify(obj);

fs.writeFile('myjsonfile.json', json);

}

});

} else {

console.log("file not exists");

for (i = 0; i < 5; i++) {

obj.table.push({

id: i,

square: i * i

});

}

let json = JSON.stringify(obj);

fs.writeFile('myjsonfile.json', json);

}

});

回答:

如果随着时间的推移该json文件不会变得太大,您应该尝试:

  1. 创建一个具有表数组的javascript对象

    var obj = {

    table: []

    };

  2. 向其中添加一些数据

    obj.table.push({id: 1, square:2});

  3. 使用stringify将其从对象转换为字符串

    var json = JSON.stringify(obj);

  4. 使用fs将文件写入磁盘

    var fs = require('fs');

    fs.writeFile(‘myjsonfile.json’, json, ‘utf8’, callback);

  5. 如果您想附加它,则读取json文件并将其转换回一个对象

    fs.readFile('myjsonfile.json', 'utf8', function readFileCallback(err, data){

    if (err){

    console.log(err);

    } else {

    obj = JSON.parse(data); //now it an object

    obj.table.push({id: 2, square:3}); //add some data

    json = JSON.stringify(obj); //convert it back to json

    fs.writeFile('myjsonfile.json', json, 'utf8', callback); // write it back

    }});

这将有效地处理最大100 MB的数据。超过此限制,您应该使用数据库引擎。

更新:

创建一个函数,该函数以字符串形式返回当前日期(年+月+日)。创建名为此字符串+

.json的文件。fs模块具有一个功能,该功能可以检查名为fs.stat(path,callback)的文件是否存在。这样,您可以检查文件是否存在。如果存在,则使用读取功能;如果不存在,请使用创建功能。使用日期字符串作为路径,因为文件将被命名为今天日期+

.json。回调将包含一个stats对象,如果文件不存在,则该对象为null。

以上是 使用Node.js在JSON文件中写入/添加数据 的全部内容, 来源链接: utcz.com/qa/433990.html

回到顶部