JSON çok yaygın bir veri formatıdır, dolayısıyla bu yaygın işlemler hakkında her şeyi öğrenmek önemlidir.
Node.js'de JSON dosyalarını okumak ve yazmak mümkündür. Yapmanız gereken tek şey, takip edilmesi kolay kılavuzumuzda ayrıntılı olarak açıklanan fs Modülünü kullanmaktır.
Node.js'de JSON dosyalarını okuma ve yazma
Yaygın olarak JSON olarak bilinen JavaScript Nesne Gösterimi formatı, yapılandırılmış verileri temsil etmek için yaygın olarak kullanılan hafif bir veri aktarım formatıdır. İnsanların okuması ve yazması, makinelerin ise ayrıştırması ve oluşturması kolay, metin tabanlı bir formattır.
Node.js'de JSON dosyalarını programlı olarak okuma ve yazma yeteneği, yapılandırılmış verileri verimli ve kolay bir şekilde depolamanıza, değiştirmenize ve değiştirmenize olanak tanır. Node.js dosya sistemi modülünü kullanarak JSON dosyalarını nasıl okuyacağınızı, yazacağınızı ve güncelleyeceğinizi öğrenin.
Node.js Dosya Sistemi Modülü
Node.js dosya sistemi (fs) modülü Node.js'de yerleşiktir. Cihazınızdaki dosya sistemiyle etkileşime girmenizi sağlar. Bunu, diğer şeylerin yanı sıra bir dosyanın içeriğini okumak, yeni bir dosya oluşturmak ve bir dosyayı silmek için kullanabilirsiniz.
Tarafından sağlanan yöntemler fs modül de olabilir senkron veya asenkron. Eşzamanlı yöntemler, dosya sistemi işlemi tamamlanıncaya kadar programınızın yürütülmesini engeller. Bu yöntemlerin adlarının sonunda genellikle "Sync" bulunur. Örneğin, dosya senkronizasyonunu oku veya yazmaFileSync.
Öte yandan, eşzamansız yöntemler programınızın yürütülmesini engellemez ve dosya sistemi işlemi gerçekleştirilirken diğer görevleri işlemeye devam etmesine izin vermez. Bu yöntemler, işlem tamamlandığında çalışacak bir geri çağırma işlevini kabul eder. Örneğin, Dosyayı oku veya yazmaDosyası.
Dosya sistemiyle etkileşimde bulunurken, olay döngüsünün engellenmeyen yapısını korumak ve uygulamanızın performansını ve yanıt verme hızını artırmak için her zaman eşzamansız yöntemler kullanmalısınız.
Bununla birlikte, özellikle basit komut dosyaları yazarken veya tek seferlik dosya işlemleriyle uğraşırken, belirli senaryolarda eşzamanlı yöntemlerin yeri vardır.
Fs Modülüyle JSON Dosyalarını Okumak
Bir JSON dosyasını okumak için önce eşzamansız dosyayı içe aktarın fs modülünü ana dosyanıza ekleyin. Şöyle:
const fs = require("node: fs/promises");
Daha düşük bir sürüm kullanıyorsanız Node.js v18, içe aktar fs bunun gibi modül:
const fs = require("fs/promises");
Modülün tamamını (Senkron ve Asenkron) içe aktarmak istiyorsanız, /promises.
JSON dosyasını kullanarak okuyabilirsiniz. Dosyayı oku iki argüman alan yöntem: bir dosya yolu ve isteğe bağlı bir yapılandırma nesnesi. Config bağımsız değişkeni, dosyayı okumak için seçenekleri belirtir ve seçeneklere sahip bir nesne veya dize kodlaması olabilir.
Nesne seçenekleri şunları içerir:
- kodlama (sicim, varsayılan "utf8"): Bu seçenek, dosyayı okurken kullanılacak karakter kodlamasını belirtir. Yaygın kodlamalar arasında metin dosyaları için "utf8" ve ikili dosyalar için "ikili" bulunur.
- bayrak (sicim, varsayılan "r"): Bu seçenek, dosyayı açarken kullanılan dosya sistemi bayrağını belirtir. Yaygın bayraklar arasında okuma için "r" ve yazma için "w" bulunur.
Örneğin:
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);
});
Bu kod adlı bir JSON dosyasını okur. kullanıcılar.json geçerli dizinde. Dosyanın verilerini aldığınızda, bunu kullanarak JSON'dan bir JavaScript nesnesine ayrıştırabilirsiniz. JSON.ayrıştırma. Bu, kodunuzdaki bir nesne olarak verilere erişmenizi ve bunları değiştirmenizi sağlar.
Küçük JSON dosyaları için şunları kullanabilirsiniz: gerekmek bunları eşzamanlı olarak okumak için. Bu yöntem, JSON dosyalarını otomatik olarak JavaScript nesnelerine ayrıştırır. Daha büyük JSON dosyaları için ve engellenmeyen senaryolarda şunu kullanın: fs.readDosyası bunları eşzamansız olarak okumak için. Ek olarak, kullanarak gerekmek ayrıca dosya içeriğini de bellekte önbelleğe alır; bu nedenle JSON dosyanızın çok değişmesi ideal olmayabilir.
Fs Modülüyle JSON Dosyaları Yazma
JSON dosyalarına veri yazabilirsiniz. yazmaDosyası yöntem. Bu yöntem üç argüman alır:
- Bir dosya yolu.
- Dosyaya yazmak istediğiniz veriler; bunlar bir dize, bir arabellek, bir EşzamansızYinelenebilir, veya Yinelenebilir bir nesne.
- İsteğe bağlı bir yapılandırma nesnesi.
Bu yöntem, verileri eşzamansız olarak bir dosyaya yazar. Dosya mevcutsa, yeni içerik mevcut içeriğin üzerine yazılır. Dosya mevcut değilse, onu oluşturur ve onu argüman olarak ilettiğiniz verilerle doldurur.
Örneğin:
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 işlevine ilettiğiniz verilerin bir dize veya arabellek olması gerekir; bu nedenle, dosyaya bir nesne yazmak istiyorsanız, önce onu kullanarak bir dizeye dönüştürmelisiniz. JSON.stringify yöntem.
JSON Dosyalarını fs Modülüyle Güncelleme
fs Bir dosyanın yazılması mevcut verilerin üzerine yazıldığından, modül dosyaları güncellemek için açık bir yol sağlamaz.
Bu soruna geçici bir çözüm bulmak için, öncelikle dosyadaki mevcut içeriği kullanarak dosyayı güncelleştirebilirsiniz. Dosyayı oku yöntem. Daha sonra mevcut verileri mevcut verilerinize ekleyebilir ve bunu veri argümanınız olarak iletebilirsiniz. yazmaDosyası yöntem.
Yukarıdaki mantığı uygulayan bir fonksiyon:
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);
}
};
Fonksiyonu şu şekilde çağırabilirsiniz:
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);
});
Bu kod bloğu, yukarıdaki bilgilere sahip kullanıcıları mevcut olanlara ekleyecektir. kullanıcılar.json dosya.
JSON Dosyalarını Okumak ve Yazmak İçin Güvenlik Konuları
JSON dosyalarını okurken ve yazarken Node.js uygulamanızı korumak, önemli güvenlik hususlarını içerir. Beklentilerinize uygun olduğundan emin olmak için JSON verilerini her zaman doğrulamanız gerekir. Ayrıca, kod yerleştirme gibi potansiyel güvenlik açıklarını engellemek için dosya erişim izinlerini kısıtlamalı ve kullanıcı girişini sterilize etmelisiniz.