将文本附加到现有的json文件node.js

时间:2018-02-12 04:38:30

标签: javascript json node.js

我正在尝试向现有的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"
}

2 个答案:

答案 0 :(得分:3)

首先,不要使用readFileSyncwriteFileSync。它们会阻止执行,并违反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. 从文件中读取数据。
  2. 修改数据以获取文件应具有的新数据。
  3. 将数据( NOT 追加)写回文件。

答案 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)
  })
})