我有一個文件,該文件以JSON形式存儲許多JavaScript對象,我需要讀取該文件,創建每個對象并對其進行處理(在我的情況下,將它們插入到db中)。JavaScript對象可以表示為以下格式:格式A:[{name: 'thing1'},....{name: 'thing999999999'}]或格式B:{name: 'thing1'} // <== My choice....{name: 'thing999999999'}請注意,...表示很多JSON對象。我知道我可以將整個文件讀入內存,然后JSON.parse()像這樣使用:fs.readFile(filePath, 'utf-8', function (err, fileContents) { if (err) throw err; console.log(JSON.parse(fileContents));});但是,該文件可能真的很大,我希望使用流來完成此操作。我在流中看到的問題是,文件內容隨時可能被分解成數據塊,那么如何JSON.parse()在此類對象上使用?理想情況下,每個對象將被讀取為一個單獨的數據塊,但是我不確定如何做到這一點。var importStream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'});importStream.on('data', function(chunk) { var pleaseBeAJSObject = JSON.parse(chunk); // insert pleaseBeAJSObject in a database});importStream.on('end', function(item) { console.log("Woot, imported objects into the database!");});*/注意,我希望防止將整個文件讀入內存。時間效率對我來說并不重要。是的,我可以嘗試一次讀取多個對象并一次插入所有對象,但這是性能上的調整-我需要一種方法來確保不會引起內存過載,無論文件中包含多少個對象。我可以選擇使用,FormatA或者選擇FormatB其他方式,只需在您的答案中指定即可。謝謝!
在Node.js中解析大型JSON文件
慕妹3242003
2019-11-25 10:36:28