【问题标题】:Append text to existing json file node.js将文本附加到现有的 json 文件 node.js
【发布时间】:2018-02-12 04:38:30
【问题描述】:

我正在尝试向现有的 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"}age: "23" 和 writeFileSync 结果像 {name: "kevin"}{age: "23"}

我想要的是像这样不断地将文本添加到我的 json 文件中

{
  name: "kevin",
  age: "23"
}

【问题讨论】:

  • 读取文件,解析JSON,修改JSON,写入文件

标签: javascript json node.js


【解决方案1】:

首先,不要使用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. 从文件中读取数据。
  2. 修改数据以获取文件应具有的新数据。
  3. 将数据(不追加)写回到文件中。

【讨论】:

    【解决方案2】:

    您可以执行以下操作:从文件中读取数据,编辑该数据,然后将其重新写回。

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

    【讨论】:

    • 不要在回调中同步抛出,使用它们的异步对应项
    猜你喜欢
    • 2018-11-17
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多