Hướng dẫn read json file nodejs - đọc tập tin json nodejs

Nội dung bài viết

Video học lập trình mỗi ngày

JSON NodeJS(JavaScript Object Notation) được sử dụng rộng rãi trong việc chia sẻ dữ liệu với nhiều ngôn ngữ khác nhau. Nhờ tính đồng nhất và đơn giản dữ liệu, do đó trong các ứng dụng Nodejs cũng được thường xuyên sử dụng. Trong bài viết này, tipjs sẽ hướng dẫn cách đọc file và ghi file JSON trong Nodejs. Cung cấp cho bạn nhiều cách nhằm có thể ở hoàn cảnh nào chúng ta cũng có thể xử lý được fileJSON.  (JavaScript Object Notation) được sử dụng rộng rãi trong việc chia sẻ dữ liệu với nhiều ngôn ngữ khác nhau. Nhờ tính đồng nhất và đơn giản dữ liệu, do đó trong các ứng dụng Nodejs cũng được thường xuyên sử dụng. Trong bài viết này, tipjs sẽ hướng dẫn cách đọc file và ghi file JSON trong Nodejs. Cung cấp cho bạn nhiều cách nhằm có thể ở hoàn cảnh nào chúng ta cũng có thể xử lý được fileJSON. 

Giả sử chúng ta có một file databases.json sẵn có dữ liệudatabases.json sẵn có dữ liệu

[
    {
        "name": "MySQL",
        "type": "RDBMS"
    },
    {
        "name": "MongoDB",
        "type": "NoSQL"
    },
    {
        "name": "Neo4j",
        "type": "Graph DB"
    }
]

Giờ chúng ta sẽ có bao nhiêu cách để đọc file này?

Read a JSON file using fs.readFile()

Sử dụng fs.readFile() để đọc file này, nhưng chú ý đây là cách đọc file không đồng bộ. Cho nên nếu bạn muốn xử lý data thì nên xử lý trong function của nó luôn, hay có thể gọi callback cũng được.

const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});

Sử dụng JSON.parse() để phân tích cú pháp nó thành một đối tượng JSON sau đó dùng loop trong JavaScript, và có kết quả như thế này

MySQL: RDBMS
MongoDB: NoSQL
Neo4j: Graph DB

Bạn nào thường xuyên sử dụng promise cũng là một các viết chuẩn xác hơn.

Read a JSON file using fs.readFileSync()

Nếu bạn muốn đọc file một cách đồng bộ thì đây, giới thiệu cho các anh chị phương pháp đó là sử dụng fs.readFileSync(). Thay vì gọi hàm callback thì có thể sử dụng fs.readFileSync() như dưới đây, để xử lý data.

const fs = require('fs');

try {

    const data = fs.readFileSync('./databases.json', 'utf8');

    // parse JSON string to JSON object
    const databases = JSON.parse(data);

    // print all databases
    databases.forEach(db => {
        console.log(`${db.name}: ${db.type}`);
    });

} catch (err) {
    console.log(`Error reading file from disk: ${err}`);
}

Chú ý: Mặc dù fs.readFileSync() cú pháp rõ ràng, bạn không nên sử dụng để đọc các tệp lớn vì nó liên quan đến vòng lặp sự kiện (Event loop) cũng như ảnh hưởng đến hiệu suất.

Reading a JSON file with require()

Cách cuối cùng mà chúng ta đang nói đến để đọc tệp JSON là sử dụng

const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
2. Tất cả những gì bạn cần làm là chuyển đường dẫn tệp JSON đến phương thức
const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
2 và nó sẽ đồng bộ đọc và phân tích cú pháp tệp JSON và trả về một đối tượng JSON đã sẵn sàng để sử dụng:

const databases = require('./databases.json');

// print all databases
databases.forEach(db => {
    console.log(`${db.name}: ${db.type}`);
});

Nhìn vào thì thấy

const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
2 hoạt động trống giống fs.readFileSync() vì nó làm việc đồng bộ. Với 3 cách đọc file JSON trong JavaScript thì chúng ta đi sang cách viết một file JSON như thế nào?

Writing to a JSON file

Cũng giống như fs.readFile()fs.readFileSync() thì module fs cũng có hai phương thức để đọc file JSON đó là

const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
8 và fs.writeFileSync(). Nhìn vào tên file cũng hiểu rồi, khi nào muốn ghi đồng bộ thì sử dụng fs.writeFileSync() và ngược lại
const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
8.

Write to a JSON file using fs.writeFile()

Để ghi file JSON thì thử cách

const fs = require('fs');

fs.readFile('./databases.json', 'utf8', (err, data) => {

    if (err) {
        console.log(`Error reading file from disk: ${err}`);
    } else {

        // parse JSON string to JSON object
        const databases = JSON.parse(data);

        // print all databases
        databases.forEach(db => {
            console.log(`${db.name}: ${db.type}`);
        });
    }

});
8 xem code dưới. Và đương nhiên chúng ta trả về trạng thái trong callback function.

const fs = require('fs');

let user = {
    name: 'Anonystick',
    emai: '',
    age: 37,
    gender: 'Male',
    profession: 'Software Developer'
};

// convert JSON object to a string
const data = JSON.stringify(user);

// write file to disk
fs.writeFile('./user.json', data, 'utf8', (err) => {

    if (err) {
        console.log(`Error writing file: ${err}`);
    } else {
        console.log(`File is written successfully!`);
    }

});

File json được save lại dưới tên là user.json và muốn đọc được thì dùng JSON.stringify() nhé các bro!user.json và muốn đọc được thì dùng JSON.stringify() nhé các bro!

Write to a JSON file using fs.writeFileSync()

Cách cuối cùng để ghi file JSON đó là

MySQL: RDBMS
MongoDB: NoSQL
Neo4j: Graph DB
1, chạy một cách đồng bộ.

const fs = require('fs');

let user = {
    name: 'Anonystick',
    emai: '',
    age: 37,
    gender: 'Male',
    profession: 'Software Developer'
};

try {

    // convert JSON object to a string
    const data = JSON.stringify(user, null, 4);

    // write file to disk
    fs.writeFileSync('./user.json', data, 'utf8');

    console.log(`File is written successfully!`);

} catch (err) {
    console.log(`Error writing file: ${err}`);
}

Kết qủa cũng tương tự nhưng có vẻ như việc xử lý từng bước có thể ngắn gọn và hay hơn. 

Khuyến khích sử dụng và học về cách lập trình đồng bộ. HếtTham khảo thêm: attacomsian
Tham khảo thêm: attacomsian