我正在尝试使用fs.appendFile()在json文件中写一个键值对。
这是我的代码:
router.post('/add', function(req, res) {
var article = {
title: req.body.title,
content: req.body.content
}
var articleData = {};
articleData[article.title] = article.content;
var textData = JSON.stringify(articleData, null, 2);
fs.appendFile('model/text.json', textData, 'utf8', finished);
function finished () {
console.log('Finished writing');
}
});
但是在我的text.json
文件中,我只得到这个:
{
"test1": "test1"
}{
"test2": "test2"
}
我无法像这样附加它:
{
"test1": "test1",
"test2": "test2"
}
首先,您需要读取文件,然后处理json数据以将内容添加到其中。第二步是写文件。您可以参考以下示例。
fs.readFile('model/text.json', 'utf8', function readFileCallback(err, data){
if (err){
console.log(err);
} else {
objData = JSON.parse(data); //now it an object
objData .test2 = 'test2'; //add/append desired data
jsonData = JSON.stringify(objData); //convert it back to json
fs.writeFile('model/text.json', jsonData, 'utf8', callback); // write it back
}});