📌  相关文章
📜  如何使用 Node.js 在 JSON 文件中添加数据?

📅  最后修改于: 2022-05-13 01:56:42.329000             🧑  作者: Mango

如何使用 Node.js 在 JSON 文件中添加数据?

JSON代表 Javascript 对象表示法。它是在应用程序之间交换信息的最简单方法之一,通常由网站/API 用于通信。要开始使用 Node.js,请参阅这篇文章。

首先,您需要确保您所期望的 JSON 文件不会消耗大量内存。对于估计消耗大约 500MB 的数据,这种方法效率不高,您应该考虑使用数据库系统。

  1. Node.js 有一个名为fs的内置模块,它代表文件系统,使用户能够以建模的方式与文件系统进行交互。要使用它,请在您的服务器程序中键入以下代码。

    const fs = require('fs');

    fs 模块的文档可以在这里找到

  2. 我们可以从创建一个 JSON 文件开始,该文件将包含一个 id、一个名称和一个城市。请注意,您可以拥有任意数量的键值对,但我们在这里使用三个作为开始。

    {
        "id": 1,
        "name": "John",
        "city": "London"
    }

    让我们将此 JSON 文件命名为 data.json。

  3. 现在我们有一个要写入的 JSON 文件,首先我们将创建一个 JavaScript 对象来访问该文件。为此,我们将使用fs.readFileSync()以原始格式为我们提供数据。要获取 JSON 格式的数据,我们将使用JSON.parse() 。因此,我们服务器端的代码将如下所示:

    var data = fs.readFileSync('data.json');
    var myObject= JSON.parse(data);
  4. 现在我们已经准备好对象,假设我们有一个要添加的键值对数据:

    let newData = {
        "country": "England"
    }  

    我们需要使用我们的对象(即 myObject)来添加这些数据。我们将使用 .push() 方法来执行此操作,如下所示:

    注意:要使用 push()函数,json 文件中的数据对象必须存储在数组中。如果 JSON 文件是空的或者有一个没有数组的对象, push() 会报错。

    myObject.push(newData);
  5. 要将这些新数据写入我们的 JSON 文件,我们将使用fs.writeFile() ,它将 JSON 文件和要添加的数据作为参数。请注意,在写入之前,我们必须首先将对象转换回原始格式。这将使用JSON.stringify()方法完成。

    var newData = JSON.stringify(myObject);
    fs.writeFile('data.json', newData, err => {
        // error checking
        if(err) throw err;
        
        console.log("New data added");
    });   

    现在我们的 data.json 文件看起来像这样:

    {
        "id": 1,
        "name": "John",
        "city": "London",
        "country": "England"
    }

示例:上述示例的 index.js 代码。

index.js
// Requiring fs module
const fs = require("fs");
  
// Storing the JSON format data in myObject
var data = fs.readFileSync("data.json");
var myObject = JSON.parse(data);
  
// Defining new data to be added
let newData = {
  country: "England",
};
  
// Adding the new data to our object
myObject.push(newData);
  
// Writing to our JSON file
var newData2 = JSON.stringify(myObject);
fs.writeFile("data2.json", newData2, (err) => {
  // Error checking
  if (err) throw err;
  console.log("New data added");
});


输出: