Xử lý file JSON trong NodeJS
Thứ Bảy, 14/10/2023 · 7 phút đọc
JSON (“JavaScript Object Notation”) là định dạng dữ liệu phổ biến, được sử dụng rộng rãi để trao đổi thông tin giữa client và server. NodeJS, nhưng không chỉ giới hạn trong backend, có khả năng xử lý file JSON một cách dễ dàng. Trong bài viết này, chúng ta sẽ tìm hiểu các phương pháp xử lý file JSON trong NodeJS từ A tới Z.
1. Tại sao JSON lại quan trọng?
JSON là một định dạng nhẹ, dễ đọc và ghi lại dữ liệu, để là ngôn ngữ chính sử dụng trong trao đổi API giữa các ứng dụng web. Nhờ có tính nhện gọn, tính tương thích cao với JavaScript, JSON đã trở thành chuẩn cho việc trao đổi dữ liệu giữa client và server.
2. Đọc file JSON trong NodeJS
NodeJS cung cấp các phương pháp nhẹ nhàng để đọc file JSON. Đầu tiên, hãy cùng đọc file JSON sử dụng mô-đun fs
của NodeJS.
Bước 1: Import mô-đun fs
:
const fs = require('fs');
Bước 2: Đọc file JSON bằng fs.readFile
:
fs.readFile('data.json', 'utf8', (err, data) => { if (err) { console.error('Lỗi khi đọc file:', err); return; } const jsonData = JSON.parse(data); console.log(jsonData); });
Trong đoạn mã này, file JSON được đọc và chuỗi nhận được sẽ được chuyển sang đối tượng JavaScript bằng JSON.parse()
.
Bước 3: Sử dụng fs.readFileSync
để đọc đồng bộ
Ngoài fs.readFile
, bạn cũng có thể sử dụng fs.readFileSync
để đọc file JSON một cách đồng bộ:
const data = fs.readFileSync('data.json', 'utf8'); const jsonData = JSON.parse(data); console.log(jsonData);
Phương pháp này sẽ đọc file đồng bộ, phù hợp cho các trường hợp không yêu cầu hiệu suất cao hoặc cần đảm bảo file được đọc hoàn tất trước khi tiếp tục các thao tác khác.
Ví dụ file data.json
:
{ "name": "Nguyen Dinh Tuan", "age": 25, "skills": [ "JavaScript", "NodeJS", "React" ] }
3. Ghi file JSON trong NodeJS
Việc ghi file JSON cũng đơn giản không kém, sử dụng mô-đun fs
với hàm writeFile
.
const newData = { name: 'Nguyen Van A', age: 25, }; fs.writeFile('output.json', JSON.stringify(newData, null, 2), 'utf8', (err) => { if (err) { console.error('Lỗi khi ghi file:', err); return; } console.log('File đã được ghi thành công'); });
Sử dụng JSON.stringify()
để chuyển đối tượng JavaScript thành chuỗi trước khi ghi vào file. Tham số thứ hai của JSON.stringify()
là null
, và tham số thứ ba là 2
để tạo khoảng cách thụt lề, giúp file JSON dễ đọc hơn.
Ghi đồng bộ với fs.writeFileSync
Nếu bạn muốn ghi file đồng bộ, bạn có thể sử dụng fs.writeFileSync
:
fs.writeFileSync('output.json', JSON.stringify(newData, null, 2), 'utf8'); console.log('File đã được ghi thành công');
4. Sử dụng require()
để đọc JSON
Trong NodeJS, bạn cũng có thể sử dụng require()
để đọc file JSON một cách nhanh chóng.
const jsonData = require('./data.json'); console.log(jsonData);
Lưu ý rằng phương pháp này được sử dụng cho các file JSON tĩnh (không thay đổi sau khi được load), vì require()
sẽ cache file vào bộ nhớ. Điều này có thể dẫn đến việc không thấy được các thay đổi mới của file JSON nếu file được cập nhật trong quá trình thực thi.
5. Đọc file JSON bằng fs/promises
Từ phiên bản Node 10 trở lên, bạn có thể sử dụng fs/promises
để đọc file JSON bằng async/await, giúp mã nguồn trông gọn gàng và dễ hiểu hơn.
const fs = require('fs/promises'); async function readJSON() { try { const data = await fs.readFile('data.json', 'utf8'); const jsonData = JSON.parse(data); console.log(jsonData); } catch (err) { console.error('Lỗi khi đọc file:', err); } } readJSON();
6. Cập nhật file JSON
Ngoài việc đọc và ghi, bạn cũng có thể cập nhật dữ liệu trong file JSON. Để làm điều này, bạn cần đọc dữ liệu hiện có, cập nhật nó và sau đó ghi lại vào file.
async function updateJSON() { try { // Đọc dữ liệu hiện có const data = await fs.readFile('data.json', 'utf8'); const jsonData = JSON.parse(data); // Cập nhật dữ liệu jsonData.age = 26; // Ghi lại file await fs.writeFile('data.json', JSON.stringify(jsonData, null, 2), 'utf8'); console.log('File đã được cập nhật thành công'); } catch (err) { console.error('Lỗi khi cập nhật file:', err); } } updateJSON();
7. Xử lý lỗi khi làm việc với JSON
Khi làm việc với file JSON, bạn nên xử lý lỗi cẩn thận để tránh các vấn đề như file không tồn tại hoặc lỗi khi phân tích cú pháp (JSON.parse
).
- Kiểm tra sự tồn tại của file: Trước khi đọc, hãy đảm bảo rằng file tồn tại bằng cách sử dụng
fs.existsSync()
.
if (fs.existsSync('data.json')) { // File tồn tại, tiến hành đọc } else { console.error('File không tồn tại'); }
- Xử lý lỗi
JSON.parse
: Khi sử dụngJSON.parse()
, bạn nên bao nó trong khốitry...catch
để đảm bảo rằng lỗi không làm crash chương trình.
try { const jsonData = JSON.parse(data); } catch (err) { console.error('Lỗi khi phân tích cú pháp JSON:', err); }
8. Tóm lại
Xử lý file JSON trong NodeJS là một kỹ năng quan trọng đối với một backend developer. Từ việc đọc, ghi file cho đến sử dụng async/await, bài viết này đã cung cấp cho bạn một cái nhìn tổng quan về các phương pháp xử lý JSON. Để tối ưu hóa mã của mình, bạn nên sử dụng async/await kết hợp với fs/promises
để giảm thiểu sự phụ thuộc vào callback và tăng tính rõ ràng cho mã nguồn.
9. Tạm kết
JSON là một định dạng không thể thiếu khi làm backend, và NodeJS có các công cụ rất mạnh mẽ để xử lý JSON một cách hiệu quả. Hãy thực hành thường xuyên để nâng cao kỹ năng xử lý dữ liệu và phát triển ứng dụng một cách tốt nhất.
Chúc bạn học tập và thành công với NodeJS!
- Ảnh đại diện bài viết -