JSON adalah format data yang sangat umum, jadi penting untuk mempelajari semua tentang operasi umum ini.
Dimungkinkan untuk membaca dan menulis file JSON di Node.js. Yang perlu Anda lakukan hanyalah memanfaatkan Modul fs sebagaimana dirinci dalam panduan kami yang mudah diikuti.
Membaca dan Menulis file JSON di Node.js
Format Notasi Objek JavaScript, yang dikenal sebagai JSON, adalah format transfer data ringan yang banyak digunakan untuk merepresentasikan data terstruktur. Ini adalah format berbasis teks yang mudah dibaca dan ditulis oleh manusia, serta mudah diurai dan dibuat oleh mesin.
Kemampuan membaca dan menulis file JSON secara terprogram di Node.js memungkinkan Anda menyimpan, bertukar, dan memanipulasi data terstruktur secara efisien dan mudah. Pelajari cara membaca, menulis, dan memperbarui file JSON menggunakan modul sistem file Node.js.
Modul Sistem File Node.js
Sistem file Node.js (fs) modul dibangun ke dalam Node.js. Ini memungkinkan Anda berinteraksi dengan sistem file di perangkat Anda. Anda dapat menggunakannya antara lain untuk membaca konten file, membuat file baru, dan menghapus file.
Metode yang disediakan oleh fs modul bisa juga sinkron atau asinkron. Metode sinkron memblokir eksekusi program Anda hingga operasi sistem file selesai. Metode ini biasanya memiliki "Sinkronisasi" di akhir namanya. Misalnya, bacaFileSync atau tulisFileSync.
Di sisi lain, metode asynchronous tidak menghalangi eksekusi program Anda dan memungkinkannya untuk terus memproses tugas-tugas lain saat operasi sistem file sedang dilakukan. Metode ini menerima fungsi panggilan balik yang akan dijalankan ketika operasi selesai. Misalnya, bacaFile atau menulisFile.
Saat berinteraksi dengan sistem file, Anda harus selalu menggunakan metode asinkron untuk menjaga sifat non-pemblokiran dari loop peristiwa dan meningkatkan kinerja dan daya tanggap aplikasi Anda.
Namun, metode sinkron memiliki tempatnya dalam skenario tertentu, terutama saat Anda menulis skrip sederhana atau menangani operasi file satu kali.
Membaca File JSON Dengan Modul fs
Untuk membaca file JSON, impor asynchronous terlebih dahulu fs modul ke dalam file utama Anda. Seperti:
const fs = require("node: fs/promises");
Jika Anda menggunakan versi yang lebih rendah dari Node.js v18, impor fs modul seperti ini:
const fs = require("fs/promises");
Jika Anda ingin mengimpor seluruh modul (Sinkron dan Asinkron), hapus /promises.
Anda dapat membaca file JSON menggunakan bacaFile metode yang mengambil dua argumen: jalur file dan objek konfigurasi opsional. Argumen config menentukan opsi untuk membaca file dan dapat berupa objek dengan opsi atau pengkodean string.
Pilihan objeknya antara lain:
- pengkodean (rangkaian, defaultnya adalah "utf8"): Opsi ini menentukan pengkodean karakter yang akan digunakan saat membaca file. Pengkodean umum mencakup "utf8" untuk file teks dan "biner" untuk file biner.
- bendera (rangkaian, defaultnya adalah "r"): Opsi ini menentukan flag sistem file yang digunakan saat membuka file. Bendera yang umum termasuk "r" untuk membaca dan "w" untuk menulis.
Misalnya:
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);
});
Kode ini membaca file JSON bernama pengguna.json di direktori saat ini. Saat Anda mengambil data file, Anda dapat menguraikannya dari JSON menjadi objek JavaScript menggunakan JSON.mengurai. Ini memungkinkan Anda mengakses dan memanipulasi data sebagai objek dalam kode Anda.
Untuk file JSON kecil, Anda dapat menggunakan memerlukan untuk membacanya secara serempak. Metode ini secara otomatis mem-parsing file JSON menjadi objek JavaScript. Untuk file JSON yang lebih besar dan dalam skenario non-pemblokiran, gunakan fs.readFile untuk membacanya secara asinkron. Selain itu, menggunakan memerlukan juga menyimpan konten file dalam memori, jadi mungkin tidak ideal jika file JSON Anda banyak berubah.
Menulis File JSON Dengan Modul fs
Anda dapat menulis data ke file JSON menggunakan menulisFile metode. Metode ini membutuhkan tiga argumen:
- Jalur file.
- Data yang ingin Anda tulis ke file, yang bisa berupa string, buffer, dan AsyncIterable, atau sebuah objek Iterable.
- Objek konfigurasi opsional.
Metode ini menulis data ke file secara asinkron. Jika file tersebut ada, maka konten yang ada akan ditimpa dengan konten baru. Jika file tidak ada, ia akan membuatnya dan mengisinya dengan data yang Anda berikan sebagai argumen.
Misalnya:
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);
});
Data yang Anda masukkan ke dalam fungsi writeFile harus berupa string atau buffer, jadi jika Anda ingin menulis objek ke file, Anda harus terlebih dahulu mengubahnya menjadi string menggunakan JSON.stringify metode.
Memperbarui File JSON Dengan Modul fs
Itu fs modul tidak menyediakan cara eksplisit untuk memperbarui file, karena menulis file akan menimpa data yang ada.
Untuk mengatasi hal ini, Anda dapat memperbarui file dengan terlebih dahulu mendapatkan konten yang ada dari file tersebut menggunakan bacaFile metode. Kemudian, Anda bisa menambahkan data yang ada ke data Anda saat ini dan meneruskannya sebagai argumen data Anda di menulisFile metode.
Berikut fungsi yang mengimplementasikan logika di atas:
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);
}
};
Anda dapat memanggil fungsinya seperti ini:
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);
});
Blok kode ini akan menambahkan pengguna dengan informasi di atas ke yang sudah ada pengguna.json mengajukan.
Pertimbangan Keamanan untuk Membaca dan Menulis File JSON
Melindungi aplikasi Node.js Anda saat membaca dan menulis file JSON melibatkan pertimbangan keamanan yang penting. Anda harus selalu memvalidasi data JSON untuk memastikannya sesuai dengan harapan Anda. Anda juga harus membatasi izin akses file dan membersihkan input pengguna untuk menggagalkan potensi kerentanan seperti injeksi kode.