Cách đọc và ghi file JSON trong Node.js

JSON là một định dạng dữ liệu cực kỳ phổ biến, vì thế, điều quan trọng bạn cần tìm hiểu tất cả những tác vụ thông dụng. Dưới đây là cách đọc và ghi file JSON trong Node.js.

Lập trình JSON

Bạn có thể đọc và ghi file JSON trong Node.js. Toàn bộ việc bạn cần làm là dùng mô đun fs làm chi tiết trong hướng dẫn đơn giản dưới đây.

Đọc và ghi file JSON trong Node.js

JavaScript Object Notation hay JSON là một định dạng chuyển đổi dữ liệu gọn nhẹ được dùng phổ biến trong việc trình bày dữ liệu theo cấu trúc. Nó là định dạng dựa trên văn bản, dễ cho con người đọc & ghi, với máy móc thì nó dễ phân tích và tạo dữ liệu.

Khả năng đọc và ghi file JSON theo chương trình trong Node.js cho phép bạn lưu trữ, trao đổi và thao tác dữ liệu theo cấu trúc hiệu quả và dễ dàng. Hãy cùng nhau học cách đọc, ghi và update file JSON bằng mô đun hệ thống file Node.js.

Mô đun hệ thống file Node.js

Hệ thống file Node.js (fs) được xây dựng trong Node.js. Nó cho phép bạn tương tác với hệ thống file trên thiết bị. Bạn có thể dùng nó để đọc nội dung, tạo mới và xóa file.

Những phương thức được cung cấp bởi mô đun fs có thể là đồng bộ hoặc bất đồng bộ. Các phương thức đồng bộ chặn chạy chương trình của bạn cho tới khi hoạt động của hệ thống file hoàn tất. Những phương pháp này luôn có “Sync” ở cuối tên. Ví dụ, readFileSync hoặc writeFileSync.

Mặt khác, các phương thức bất đồng bộ không chạy thực thi chương trình và cho phép nó liên tục xử lý những nhiệm vụ khác trong khi triển khai hoạt động hệ thống file. Những phương thức này chấp nhận hàm callback, sẽ chạy khi hoạt động hoàn tất. Ví dụ, readFile hoặc writeFile.

Khi tương tác với hệ thống file, bạn luôn dùng các phương thức bất đồng bộ để duy trì bản chất không chặn của lặp sự kiện và cải thiện hiệu suất và phản hồi của ứng dụng.

Tuy nhiên, các phương thức đồng bộ có vai trò riêng của chúng trong những trường hợp nhất định, đặc biệt là khi bạn đang viết các tập lệnh đơn giản hoặc xử lý những thao tác tệp 1 lần.

Đọc file JSON với mô đun fs

Để đọc file JSON, đầu tiên, nhập mô đun fs bất đồng bộ vào file chính như sau:

const fs = require("node:fs/promises");

Nếu đang dùng phiên bản thấp hơn Node.js 18, nhập mô đun fs như sau:

const fs = require("fs/promises");

Bạn có thể đọc file JSON bằng phương thức readFile nhận 2 đối số: một đường dẫn file và một đối tượng cấu hình tùy chọn. Đối số config xác định các lựa chọn để đọc file và có thể là một đối tượng với những lựa chọn hay mã hóa chuỗi.

Tùy chọn đối tượng bao gồm:

  • Encoding (string, mặc định là utf8): Lựa chọn này xác định ký tự mã hóa để dùng khi đọc file. Những mã hóa thông dụng bao gồm “utf8” cho file văn bản và “binary” cho file nhị phân.
  • Flag (string, mặc định là r): Lựa chọn này xác định flag hệ thống file được dùng khi mở tập tin. Những flag thông dụng bao gồm “r” cho việc đọc, và “w” cho việc viết.

Ví dụ:

fs.readFile("./users.json", { encoding: "utf-8", flag: "r" })
  .then((data) => {
    const users = JSON.parse(data);
    console.log(users);
  })
  .catch((error) => {
    console.error('Error reading the JSON file:', error);
  });

Code này đọc một file JSON tên users.json trong thư mục hiện tại. Khi bạn truy xuất dữ liệu của file, bạn có thể phân tích nó từ JSON vào đối tượng JavaScript bằng JSON.parse. Điều này cho phép bạn truy cập và chỉnh sửa dữ liệu dưới dạng một đối tượng trong code.

Ghi file JSON bằng mô đun fs

Bạn có thể viết dữ liệu vào file JSON bằng phương thức writeFile. Phương pháp này tính 3 đối số:

  • Một đường dẫn file.
  • Dữ liệu bạn muốn ghi vào file. Nó có thể là một chuỗi, một buffer, một AsyncIterable, hoặc một đối tượng Iterable.
  • Một đối tượng cấu hình tùy chọn.

Phương thích này ghi dữ liệu không đồng bộ vào một file. Nếu file tồn tại, nó ghi đè nội dung hiện có vào nội dung mới. Nếu file không tồn tại, nó tạo tập tin, rồi điền dữ liệu bạn chuyển dưới dạng đối số vào nó.

Ví dụ:

const fakeUsers = [
  {
    id: 1,
    name: "John Doe",
    username: "johndoe123",
    address: {
      street: "123 Main St",
      city: "Anytown",
    },
  },
  {
    id: 2,
    name: "Jane Smith",
    username: "janesmith456",
    address: {
      street: "456 Elm St",
      city: "Another City",
    },
  }
];

fs.writeFile("./users.json", JSON.stringify(fakeUsers), {
  encoding: "utf-8",
  flag: "w",
}).catch((error) => {
  console.error('Error writing the JSON file:', error);
});

Dữ liệu bạn chuyển vào hàm writeFile phải là một chuỗi hoặc vùng đệm, vì thế, nếu bạn muốn ghi một đối tượng vào file, đầu tiên, bạn phải chuyển đổi nó sang dạng chuỗi bằng phương thức JSON.stringify.

Update file JSON bằng mô đun fs

Mô đun fs không cung cấp cách rõ ràng để update file, vì việc ghi tệp sẽ đè lên dữ liệu hiện tại.

Để xử lý vấn đề này, trước tiên bạn có thể update file bằng cách lấy nội dung hiện tại từ file bằng phương thức readFile. Sau đó, thêm dữ liệu hiện có vào dữ liệu hiện tại và chuyển nó đi dưới dạng đối số dữ liệu trong phương thức writeFile.

Đây là một hàm triển khai logic trên:

const updateFile = async (filePath, data) => {
  try {
    const fileContents = await fs.readFile(filePath, {
      encoding: "utf-8",
      flag: "r",
    });

    const fileData = JSON.parse(fileContents);

    const updatedFileData = [...fileData, ...data];

    await fs.writeFile(filePath, JSON.stringify(updatedFileData), {
      encoding: "utf-8",
      flag: "w",
    });

    return "File updated successfully";
  } catch (error) {
    console.error('Error updating the JSON file:', error);
  }
};

Bạn có thể gọi hàm như sau:

updateFile("./users.json", [
  {
    id: 4,
    name: "Jane Doe",
    username: "janedoe123",
    address: {
      street: "123 Main St",
      city: "Anytown",
    },
  },
  {
    id: 5,
    name: "John Smith",
    username: "johnsmith456",
    address: {
      street: "456 Elm St",
      city: "Another City",
    },
  }
]).then((message) => {
  console.log(message);
});

Khối code này sẽ thêm người dùng kèm thông tin ở trên vào file users.json hiện tại.

Bảo vệ ứng dụng Node.js khi đọc và ghi file JSON liên quan tới các vấn đề bảo mật quan trọng. Bạn nên xác thực dữ liệu JSON thường xuyên để đảm bảo nó hoạt động đúng như mong đợi. Bạn cũng nên hạn chế quyền truy cập và tẩy xóa dữ liệu đầu vào của người dùng để ngăn chặn nguy cơ hổng dữ liệu.

Thứ Ba, 31/10/2023 16:57
51 👨 481
0 Bình luận
Sắp xếp theo