我正在尝试向现有的json文件添加新文本,我尝试了writeFileSync和appendFileSync,但是即使我使用JSON.stringify,添加的文本也不会格式化为json。
const fs = require('fs');
fs.readFile("test.json", (err, data) => {
if( err) throw err;
var data = JSON.parse(data);
console.log(data);
});
var student = {
age: "23"
};
fs.appendFileSync("test.json", "age: 23");
// var writeData = fs.writeFileSync("test.json", JSON.stringify(student));
我的json文件
{ name: "kevin" }
Append就是这样,{name:“kevin”}年龄:“23” 而writeFileSync就像{name:“kevin”} {age:“23”}
我想要的是不断添加文本到我的json文件,如此
{
name: "kevin",
age: "23"
}
答案 0 :(得分:3)
首先,不要使用readFileSync
和writeFileSync
。它们会阻止执行,并违反node.js标准。这是正确的代码:
const fs = require('fs');
fs.readFile("test.json", (err, data) => { // READ
if (err) {
return console.error(err);
};
var data = JSON.parse(data.toString());
data.age = "23"; // MODIFY
var writeData = fs.writeFile("test.json", JSON.stringify(data), (err, result) => { // WRITE
if (err) {
return console.error(err);
} else {
console.log(result);
console.log("Success");
}
});
});
此代码的作用:
答案 1 :(得分:0)
您可以执行以下操作:从文件中读取数据,编辑该数据,然后再将其写回。
const fs = require("fs")
fs.readFile("test.json", (err, buffer) => {
if (err) return console.error('File read error: ', err)
const data = JSON.parse(buffer.toString())
data.age = 23
fs.writeFile("test.json", JSON.stringify(data), err => {
if (err) return console.error('File write error:', err)
})
})