在Nodejs中parsing大的JSON文件并独立处理每个对象

我需要在Nodejs中读取一个大的JSON文件(大约630MB)并将每个对象插入到MongoDB中。

我已经阅读了这里的答案: 在Nodejs中parsing大的JSON文件 。

但是,那里的答案是逐行处理JSON文件,而不是逐个对象地处理它。 因此,我仍然不知道如何从这个文件中获取对象并进行操作。

我在我的JSON文件中有大约100,000个这样的对象。

数据格式:

[ { "id": "0000000", "name": "Donna Blak", "livingSuburb": "Tingalpa", "age": 53, "nearestHospital": "Royal Children's Hospital", "treatments": { "19890803": { "medicine": "Stomach flu B", "disease": "Stomach flu" }, "19740112": { "medicine": "Progeria C", "disease": "Progeria" }, "19830206": { "medicine": "Poliomyelitis B", "disease": "Poliomyelitis" } }, "class": "patient" }, ... ] 

干杯,

亚历克斯

有一个名为“stream-json”的模块,它完全符合你的要求。

它可以parsingJSON文件远远超出可用内存。

StreamArray处理一个经常使用的用例:与Django生成的数据库转储类似的相当小的对象。 它将数组元素单独stream式处理,自动组装它们。

这是一个非常基本的例子:

 'use strict'; const StreamArray = require('stream-json/utils/StreamArray'); const path = require('path'); const fs = require('fs'); let jsonStream = StreamArray.make(); //You'll get json objects here jsonStream.output.on('data', function ({index, value}) { console.log(index, value); }); jsonStream.output.on('end', function () { console.log('All done'); }); let filename = path.join(__dirname, 'sample.json'); fs.createReadStream(filename).pipe(jsonStream.input);