【问题标题】:write into json file with fs.append使用 fs.append 写入 json 文件
【发布时间】:2021-12-03 14:01:45
【问题描述】:

我正在使用 node.js 开发一个项目,并且正在努力将一个 JSON 对象放置在我已经存在的数据中的正确位置。我的文件目前如下所示:

[
  {
    "id": "001",
    "name": "Paul,
    "city": "London"
  },
  {
    "id": "002",
    "name": "Peter,
    "city": "New York"
  },
...
]

我尝试将我的数据排列为:

var data = { id: id, name: name, city: city };

将相应的数据存储在这些变量中。然后我用var json = JSON.stringify(data) 试了一下

fs.appendFile("myJSONFile.json", json, function (err) {
        if (err) throw err;
        console.log('Changed!');
    }); 

文件确实发生了变化,但新条目位于方括号之后。

[
  {
    "id": "001",
    "name": "Paul,
    "city": "London"
  },
  {
    "id": "002",
    "name": "Peter,
    "city": "New York"
  },
...
]{"id":"004","name":"Mark","city":"Berlin"}

如何在之前的条目旁边获得它?任何帮助将不胜感激!

【问题讨论】:

    标签: javascript node.js json fs appendfile


    【解决方案1】:

    您需要先读取文件,在您的情况下,您将在文件中存储一个数组。因此,您需要将对象推送到从文件中读取的数组中,并将结果写回文件中(而不是追加):

    const fs = require('fs/promises');
    
    // ...
    
    const addToFile = async data => {
      let fileContents = await fs.readFile('myJSONFile.json', { encoding: 'utf8' });
      fileContents = JSON.parse(fileContents);
      fileContents.push(data);
      await fs.writeFile('myJSONFile.json', JSON.stringify(fileContents, null, 2), { encoding: 'utf8' });
    };
    

    【讨论】:

      【解决方案2】:

      你需要读取当前文件,解析JSON内容,修改它,然后保存修改后的内容:

      const jsonString = fs.readFileSync(path);
      const jsonObject = JSON.parse(jsonString);
      jsonObject.push(item);
      fs.writeFileSync(path, JSON.stringify(jsonObject));
      

      【讨论】:

      • 谢谢,帮了我很多忙!
      猜你喜欢
      • 2015-08-25
      • 2016-12-13
      • 1970-01-01
      • 2017-12-16
      • 2017-06-29
      • 2020-02-14
      • 1970-01-01
      • 2017-11-28
      • 2018-12-25
      相关资源
      最近更新 更多