Nodejs đọc từng dòng tệp JSON
JSON là một định dạng phổ biến để chia sẻ dữ liệu giữa các ứng dụng được viết bằng các ngôn ngữ khác nhau. trong nút. js, JSON đã trở thành lựa chọn thuận tiện để lưu trữ dữ liệu nhờ tính đồng nhất và đơn giản của nó Show
Nút. js cung cấp các mô-đun tích hợp giúp dễ dàng làm việc với dữ liệu JSON. Trong bài viết này, bạn sẽ học cách
Đọc từ tệp JSONTrước khi tôi đi vào chi tiết cách đọc tệp JSON, trước tiên chúng ta hãy tạo một tệp JSON mới có tên là 8 chứa dữ liệu JSON saucơ sở dữ liệu. json
8 là một tệp đơn giản được lưu trữ trên đĩa chứa một mảng đối tượng JSON. Bạn muốn đọc tệp này và in các bản ghi trên bàn điều khiểnĐể đọc dữ liệu JSON từ tệp trên, bạn có thể sử dụng mô-đun gốc 6. Mô-đun này cung cấp các phương thức để đọc, ghi, xem tệp và nhiều chức năng khác để tương tác với hệ thống tệp. Vì nó là một mô-đun gốc, bạn không cần phải cài đặt bất cứ thứ gì. Chỉ cần nhập nó vào mã của bạn bằng cách gọi 1Mô-đun 6 cung cấp cho chúng tôi hai phương thức, 3 và 4, có thể được sử dụng để đọc dữ liệu từ một tệp. Cả hai chức năng này đều làm giống nhau - đọc tệp từ đĩa. Sự khác biệt duy nhất nằm ở cách các chức năng này thực sự được thực thiĐọc tệp JSON bằng cách sử dụng MySQL: RDBMS MongoDB: NoSQL Neo4j: Graph DB 3Phương thức 3 đọc dữ liệu từ tệp không đồng bộ. Nó không chặn việc thực thi vòng lặp sự kiện trong khi đọc tệp. Thay vào đó, điều khiển được chuyển sang dòng kế tiếp để thực thi các dòng mã còn lại. Khi dữ liệu tệp có sẵn, 3 gọi hàm gọi lại được truyền cho nó dưới dạng đối sốĐể đọc dữ liệu JSON từ tệp 8 bằng cách sử dụng phương thức 3, chỉ cần nhập tên tệp, loại mã hóa tùy chọn và hàm gọi lại để nhận dữ liệu tệp
Trong ví dụ trên, vì phương thức 3 trả về dữ liệu dưới dạng chuỗi JSON nên chúng ta phải sử dụng 71 để phân tích nó thành đối tượng JSON. Cuối cùng, chúng tôi sử dụng vòng lặp forEach() để in tất cả cơ sở dữ liệu trên bàn điều khiểnĐây là đầu ra của mã trên
Đọc tệp JSON bằng cách sử dụng MySQL: RDBMS MongoDB: NoSQL Neo4j: Graph DB 4Phương thức 4 đọc dữ liệu từ một tệp một cách đồng bộ. Không giống như 3, nó chặn việc thực thi vòng lặp sự kiện cho đến khi tất cả dữ liệu từ tệp được tảiThay vì truyền phương thức gọi lại, bạn chỉ truyền tên của tệp cho 4 như hình bên dưới 7Mặc dù 4 có cú pháp rõ ràng, nhưng bạn không bao giờ nên sử dụng nó để đọc các tệp lớn vì nó chặn việc thực thi vòng lặp sự kiện và có thể ảnh hưởng nghiêm trọng đến hiệu suất của ứng dụng. Nó chỉ hữu ích khi đọc các tệp cấu hình khi khởi động ứng dụng trước khi thực hiện bất kỳ tác vụ nào khácĐọc tệp JSON bằ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}`) }) } }) 7Cuối cùng, cách cuối cùng để đọc tệp JSON là sử dụng phương thức toàn cầu 7. Cách tiếp cận này tương tự như những gì bạn sử dụng để tải Node. js nhưng cũng hoạt động để tải các tệp JSONTất cả những gì bạn cần làm là chuyển đường dẫn tệp JSON tới phương thức 7 và nó sẽ đọc và phân tích cú pháp tệp JSON một cách đồng bộ và trả về một đối tượng JSON sẵn sàng để sử dụng 8Phương thức 7 hoạt động giống như phương thức 4 — đọc tệp một cách đồng bộ, nhưng nó là một phương thức toàn cục có thể được gọi từ mọi nơi. Hơn nữa, nó tự động phân tích nội dung tệp thành một đối tượng JavaScriptTuy nhiên, có một vài nhược điểm khi sử dụng phương pháp 7
Do những hạn chế trên, 7 chỉ phù hợp để tải các tệp cấu hình tĩnh không thay đổi thường xuyên. Để đọc một tệp động như 8, bạn nên sử dụng phương thức 3 để thay thếGhi vào tệp JSONCũng giống như phương thức 3 và 4, module 6 cung cấp thêm 2 chức năng ghi file dữ liệu. 01 và 02Như tên gợi ý, phương thức 02 ghi dữ liệu vào tệp một cách đồng bộ trong khi 01 ghi dữ liệu vào tệp theo cách không đồng bộGhi vào tệp JSON bằng cách 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}`) }) } }) 01Để ghi JSON vào một tệp bằng cách sử dụng 01, chỉ cần chuyển vào đường dẫn của tệp để ghi dữ liệu vào, chuỗi JSON mà bạn muốn ghi, loại mã hóa tùy chọn và hàm gọi lại sẽ được thực thi sau khi tệp được ghiLưu ý rằng nếu tệp chưa tồn tại, nó sẽ được tạo; Đây là một ví dụ 0Trong ví dụ trên, chúng tôi đang lưu trữ đối tượng JSON 07 vào tệp 08Lưu ý phương thức 09 để chuyển đổi đối tượng JSON thành chuỗi JSON trước khi lưu nó vào đĩa. Nếu bạn cố ghi một đối tượng vào một tệp mà không xâu chuỗi nó trước, tệp của bạn sẽ trống và trông giống như bên dưới 0Bây giờ, nếu bạn thực thi đoạn mã trên, bạn sẽ thấy nội dung sau trong tệp 08 2Về mặt kỹ thuật, đó là tất cả những gì bạn cần để ghi JSON vào một tệp. Tuy nhiên, dữ liệu được lưu dưới dạng một dòng chuỗi trong tệp Để in đẹp đối tượng JSON, hãy thay đổi phương thức 09 như sau 4Bây giờ, nếu bạn mở tệp 08, bạn sẽ thấy nội dung sau 6Ghi vào tệp JSON bằng cách 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}`) }) } }) 02Cuối cùng, cách cuối cùng để ghi dữ liệu vào tệp JSON là sử dụng phương pháp 02. Nó ghi dữ liệu vào một tệp một cách đồng bộ và chặn việc thực thi Nút. js vòng lặp sự kiện cho đến khi tệp được ghi vào đĩaHãy xem ví dụ sau sử dụng 02 để ghi một đối tượng JSON vào một tệp 0Cập nhật tệp JSONBây giờ chúng ta đã học cách đọc và ghi các tệp JSON, nếu bạn muốn cập nhật một tệp JSON hiện có thì sao? Chúng tôi có thể kết hợp các phương pháp này để sử dụng các tệp JSON của mình dưới dạng cơ sở dữ liệu đơn giản. Bất cứ khi nào chúng tôi muốn cập nhật tệp JSON, chúng tôi có thể đọc nội dung, thay đổi dữ liệu và sau đó ghi dữ liệu mới trở lại tệp gốc Đây là một ví dụ minh họa cách bạn có thể thêm một bản ghi khác vào tệp 8 1Bây giờ, nếu bạn thực thi đoạn mã trên, bạn sẽ thấy một mục mới trong 8 như hình bên dưới 2thư viện bên thứ 3Nếu bạn không muốn phân tích cú pháp hoặc xâu chuỗi dữ liệu JSON theo cách thủ công mỗi khi bạn đọc hoặc ghi vào tệp JSON, hãy sử dụng mô-đun jsonfile để thay thế Mô-đun 08 bao bọc mô-đun 6 và các phương thức đối tượng 20 và hiển thị các phương thức tương tự như mô-đun 6 để đọc và ghi các tệp JSONNhập lệnh sau vào thư mục gốc dự án của bạn để cài đặt mô-đun 08 3Để đọc dữ liệu từ các tệp JSON, mô-đun 08 cung cấp các phương thức 24 và 25. Chúng tương tự như những gì được cung cấp bởi mô-đun 6, ngoại trừ việc chúng tự động phân tích nội dung của tệp thành một đối tượng JSON 4Tương tự, để ghi dữ liệu vào tệp JSON, bạn có thể sử dụng phương thức 27 hoặc 28 5Phần kết luậnTrong bài viết này, chúng tôi đã xem xét các cách khác nhau để đọc và ghi các tệp JSON, bao gồm mô-đun 6, phương pháp 7 và mô-đun 08 — một mô-đun của bên thứ baMô-đun 6 là mô-đun gốc cung cấp các chức năng cho cả đọc và ghi tệp. Các phương thức 3 và 01 có thể được sử dụng để đọc và ghi dữ liệu vào các tệp JSON một cách không đồng bộ. Để tương tác đồng bộ với hệ thống tệp, có sẵn các phương thức 4 và 02Bạn cũng có thể sử dụng phương pháp toàn cầu 7 để đọc và phân tích đồng bộ tệp JSON khi khởi động. Tuy nhiên, nó chỉ lưu trữ dữ liệu tệp và chỉ có thể được sử dụng để đọc các tệp có phần mở rộng 83Nếu bạn muốn tìm hiểu thêm, hãy xem JSON thực sự là gì và cách bạn có thể đọc và ghi một đối tượng JSON vào một tệp trong Node. js Làm cách nào để đọc từng dòng tệp trong nodejs?Phương pháp 1. Sử dụng Mô-đun Readline . Readline là một mô-đun riêng của Node. js, nó được phát triển đặc biệt để đọc từng dòng nội dung từ bất kỳ luồng nào có thể đọc được. Nó có thể được sử dụng để đọc dữ liệu từ dòng lệnh. const readline = require('readline');
Làm cách nào để đọc tệp JSON trong nodejs?Để tải dữ liệu từ khách hàng. json, chúng tôi sẽ sử dụng fs. readFile , chuyển cho nó đường dẫn đến tệp của chúng tôi, loại mã hóa tùy chọn và gọi lại để nhận dữ liệu tệp . Nếu tệp được đọc thành công, nội dung sẽ được chuyển đến hàm gọi lại.
Làm cách nào để đọc từng dòng tệp JSON trong JavaScript?Sử dụng Readline
createInterface trong đó đầu vào là luồng có thể đọc được tạo bằng fs. createReadStream('kiểm tra. json') . Trong các tùy chọn giao diện, chúng tôi cũng chuyển crlfDelay , điều này cho biết rằng nếu độ trễ giữa \r và \n vượt quá crlfDelay mili giây, thì cả \r và \n sẽ được coi là đầu vào cuối dòng riêng biệt.
Làm cách nào để đọc từng dòng tệp trong js?Trong JavaScript, phương thức tích hợp sẵn FileReader() cùng với mô-đun readline có thể được sử dụng để đọc từng dòng tệp . Phương thức FileReader() đọc nội dung của các tệp được lưu trữ trên hệ thống cục bộ. Hơn nữa, mô-đun readline thực hiện việc đọc nội dung. Cả hai phương pháp này đều yêu cầu nguồn của tệp. |