Το JSON είναι μια πολύ κοινή μορφή δεδομένων, επομένως είναι σημαντικό να μάθετε τα πάντα για αυτές τις κοινές λειτουργίες.
Είναι δυνατή η ανάγνωση και η εγγραφή αρχείων JSON στο Node.js. Το μόνο που χρειάζεται να κάνετε είναι να χρησιμοποιήσετε τη μονάδα fs όπως περιγράφεται στον εύκολο στην παρακολούθηση οδηγό μας.
Ανάγνωση και εγγραφή αρχείων JSON στο Node.js
Η μορφή σημειογραφίας αντικειμένου JavaScript, ευρέως γνωστή ως JSON, είναι μια ελαφριά μορφή μεταφοράς δεδομένων που χρησιμοποιείται ευρέως για την αναπαράσταση δομημένων δεδομένων. Είναι μια μορφή βασισμένη σε κείμενο που είναι εύκολο να διαβάσουν και να γράψουν οι άνθρωποι και οι μηχανές να αναλύσουν και να δημιουργήσουν.
Η δυνατότητα προγραμματισμού ανάγνωσης και εγγραφής αρχείων JSON στο Node.js σάς επιτρέπει να αποθηκεύετε, να ανταλλάσσετε και να χειρίζεστε δομημένα δεδομένα αποτελεσματικά και εύκολα. Μάθετε πώς να διαβάζετε, να γράφετε και να ενημερώνετε αρχεία JSON χρησιμοποιώντας τη λειτουργική μονάδα συστήματος αρχείων Node.js.
Η μονάδα συστήματος αρχείων Node.js
Το σύστημα αρχείων Node.js (fs) η μονάδα είναι ενσωματωμένη στο Node.js. Σας επιτρέπει να αλληλεπιδράτε με το σύστημα αρχείων της συσκευής σας. Μπορείτε να το χρησιμοποιήσετε για να διαβάσετε τα περιεχόμενα ενός αρχείου, να δημιουργήσετε ένα νέο αρχείο και να διαγράψετε ένα αρχείο, μεταξύ άλλων.
Οι μέθοδοι που παρέχονται από το fs ενότητα μπορεί είτε να είναι σύγχρονη ή ασύγχρονη. Οι σύγχρονες μέθοδοι εμποδίζουν την εκτέλεση του προγράμματός σας μέχρι να ολοκληρωθεί η λειτουργία του συστήματος αρχείων. Αυτές οι μέθοδοι έχουν συνήθως "Sync" στο τέλος των ονομάτων τους. Για παράδειγμα, readFileSync ή writeFileSync.
Από την άλλη πλευρά, οι ασύγχρονες μέθοδοι δεν εμποδίζουν την εκτέλεση του προγράμματός σας και του επιτρέπουν να συνεχίσει να επεξεργάζεται άλλες εργασίες ενώ εκτελείται η λειτουργία του συστήματος αρχείων. Αυτές οι μέθοδοι δέχονται μια λειτουργία επανάκλησης που θα εκτελεστεί όταν ολοκληρωθεί η λειτουργία. Για παράδειγμα, readFile ή writeFile.
Κατά την αλληλεπίδραση με το σύστημα αρχείων, θα πρέπει πάντα να χρησιμοποιείτε ασύγχρονες μεθόδους για να διατηρήσετε τη μη αποκλειστική φύση του βρόχου συμβάντων και να βελτιώσετε την απόδοση και την ανταπόκριση της εφαρμογής σας.
Ωστόσο, οι σύγχρονες μέθοδοι έχουν τη θέση τους σε ορισμένα σενάρια, ειδικά όταν γράφετε απλά σενάρια ή ασχολείστε με λειτουργίες αρχείων μίας χρήσης.
Ανάγνωση αρχείων JSON με τη μονάδα fs
Για να διαβάσετε ένα αρχείο JSON, πρώτα εισαγάγετε το ασύγχρονο fs μονάδα στο κύριο αρχείο σας. Όπως έτσι:
const fs = require("node: fs/promises");
Εάν χρησιμοποιείτε έκδοση χαμηλότερη από Node.js v18, εισαγωγή του fs ενότητα όπως αυτή:
const fs = require("fs/promises");
Εάν θέλετε να εισαγάγετε ολόκληρη τη λειτουργική μονάδα (Σύγχρονη και Ασύγχρονη), αφαιρέστε το /promises.
Μπορείτε να διαβάσετε ένα αρχείο JSON χρησιμοποιώντας το readFile μέθοδος που παίρνει δύο ορίσματα: μια διαδρομή αρχείου και ένα προαιρετικό αντικείμενο διαμόρφωσης. Το όρισμα config καθορίζει επιλογές για την ανάγνωση του αρχείου και μπορεί να είναι ένα αντικείμενο με επιλογές ή μια κωδικοποίηση συμβολοσειράς.
Οι επιλογές αντικειμένων περιλαμβάνουν:
- κωδικοποίηση (σειρά, η προεπιλογή είναι "utf8"): Αυτή η επιλογή καθορίζει την κωδικοποίηση χαρακτήρων που θα χρησιμοποιηθεί κατά την ανάγνωση του αρχείου. Οι κοινές κωδικοποιήσεις περιλαμβάνουν το "utf8" για αρχεία κειμένου και το "δυαδικό" για τα δυαδικά αρχεία.
- σημαία (σειρά, η προεπιλογή είναι "r"): Αυτή η επιλογή καθορίζει τη σημαία συστήματος αρχείων που χρησιμοποιείται κατά το άνοιγμα του αρχείου. Οι κοινές σημαίες περιλαμβάνουν "r" για ανάγνωση και "w" για γραφή.
Για παράδειγμα:
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);
});
Αυτός ο κώδικας διαβάζει ένα αρχείο JSON που ονομάζεται users.json στον τρέχοντα κατάλογο. Όταν ανακτάτε τα δεδομένα του αρχείου, μπορείτε να τα αναλύσετε από το JSON σε ένα αντικείμενο JavaScript χρησιμοποιώντας JSON.ανάλυση. Αυτό σας επιτρέπει να έχετε πρόσβαση και να χειρίζεστε τα δεδομένα ως αντικείμενο στον κώδικά σας.
Για μικρά αρχεία JSON, μπορείτε να χρησιμοποιήσετε απαιτώ για να τα διαβάσετε συγχρονισμένα. Αυτή η μέθοδος αναλύει αυτόματα τα αρχεία JSON σε αντικείμενα JavaScript. Για μεγαλύτερα αρχεία JSON και σε σενάρια μη αποκλεισμού, χρησιμοποιήστε fs.readFile να τα διαβάζουν ασύγχρονα. Επιπλέον, χρησιμοποιώντας απαιτώ αποθηκεύει επίσης προσωρινά τα περιεχόμενα του αρχείου στη μνήμη, επομένως μπορεί να μην είναι ιδανικό εάν το αρχείο JSON σας αλλάξει πολύ.
Σύνταξη αρχείων JSON με τη μονάδα fs
Μπορείτε να γράψετε δεδομένα σε αρχεία JSON χρησιμοποιώντας το writeFile μέθοδος. Αυτή η μέθοδος παίρνει τρία ορίσματα:
- Μια διαδρομή αρχείου.
- Τα δεδομένα που θέλετε να γράψετε στο αρχείο, τα οποία μπορεί να είναι μια συμβολοσειρά, ένα buffer, ένα AsyncIterable, ή ένα επαναληπτικό αντικείμενο.
- Ένα προαιρετικό αντικείμενο διαμόρφωσης.
Αυτή η μέθοδος εγγράφει ασύγχρονα δεδομένα σε ένα αρχείο. Εάν το αρχείο υπάρχει, αντικαθιστά το υπάρχον περιεχόμενο με το νέο περιεχόμενο. Εάν το αρχείο δεν υπάρχει, το δημιουργεί και το συμπληρώνει με τα δεδομένα που μεταβιβάζετε ως όρισμα.
Για παράδειγμα:
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);
});
Τα δεδομένα που μεταβιβάζετε στη συνάρτηση writeFile πρέπει να είναι μια συμβολοσειρά ή μια προσωρινή μνήμη, επομένως εάν θέλετε να γράψετε ένα αντικείμενο στο αρχείο, πρέπει πρώτα να το μετατρέψετε σε συμβολοσειρά χρησιμοποιώντας το JSON.stringify μέθοδος.
Ενημέρωση αρχείων JSON με τη μονάδα fs
ο fs Η ενότητα δεν παρέχει έναν ρητό τρόπο ενημέρωσης αρχείων, καθώς η εγγραφή ενός αρχείου αντικαθιστά τυχόν υπάρχοντα δεδομένα.
Για να επιλύσετε αυτό το πρόβλημα, μπορείτε να ενημερώσετε ένα αρχείο λαμβάνοντας πρώτα το υπάρχον περιεχόμενο από το αρχείο χρησιμοποιώντας το readFile μέθοδος. Στη συνέχεια, μπορείτε να προσθέσετε τα υπάρχοντα δεδομένα στα τρέχοντα δεδομένα σας και να τα μεταβιβάσετε ως όρισμα δεδομένων στο writeFile μέθοδος.
Ακολουθεί μια συνάρτηση που υλοποιεί την παραπάνω λογική:
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);
}
};
Μπορείτε να καλέσετε τη συνάρτηση ως εξής:
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);
});
Αυτό το μπλοκ κώδικα θα προσθέσει τους χρήστες με τις παραπάνω πληροφορίες στο υπάρχον users.json αρχείο.
Θέματα ασφαλείας για την ανάγνωση και τη σύνταξη αρχείων JSON
Η προστασία της εφαρμογής Node.js κατά την ανάγνωση και τη σύνταξη αρχείων JSON περιλαμβάνει κρίσιμα ζητήματα ασφάλειας. Θα πρέπει πάντα να επικυρώνετε τα δεδομένα JSON για να διασφαλίζετε ότι συμμορφώνονται με τις προσδοκίες σας. Θα πρέπει επίσης να περιορίσετε τις άδειες πρόσβασης στα αρχεία και να απολυμάνετε την είσοδο των χρηστών για να αποτρέψετε πιθανές ευπάθειες όπως η ένεση κώδικα.