生成具有数百万对象的大型JSON文件



我希望这是一个合适的地方问这个问题,这不是一个不可能的,但我在一个项目上工作,主要使用javascript,我想知道是否有一种方法,我可以生成一个庞大的JSON文件,其中只是一个对象数组,但可以持有说…超过10亿个物体!对象实际上只包含从1>一些inputNum (inputNum可以是一个数字,比如999,999,999,999)。这样,我和我的团队就不必一直计算非常大的数字,推到一个数组,并且在我们工作和计算数据时不断出现内存泄漏。我们的数据实在是太大了。

我有创建json对象的代码,并推动它,它的工作,但似乎不能继续计数过去的某个大数字(999,999是最高的我可以得到它),然后我用完内存,无法完成任务。我试着把这些笑话分成"小块"。所以我可以"缝合"一下。他们一起,哈哈,但是当我试图从一个大的数字,比如:999,999到999,999,999继续我的序列计数时,我的控制台崩溃了…

我知道它有很多写和推,这也不会是为消费者,它将存储在我们的客户端以及在一个专用的存储设备上,所以文件大小不是一个问题。这是Javascript可能的任务吗?执行此任务的解决方案是什么?

我的对象的一个例子是供参考:

[ { "i": 1, "iSquared": 2 }, { "i": 2, "iSquared": 4 }, { "i": 3, "iSquared": 6 }, ... { "i": 999999999, "iSquared": 9.99999998e17 } ]

再一次,我知道这很疯狂!它甚至可能不必是那么高的数字,但我可以计数并推送到JSON文件的最高数值是多少?我很感激你的帮助,谢谢!代码如下:

const fs = require("fs");
let inputNum = 9999999;
async function readSequenceJSON() {
let data = await fs.promises.readFile("./numberline.json");
return JSON.parse(data);
}
function writeSequenceJSON(data) {
let str = JSON.stringify(data);
return fs.promises.writeFile("./numberline.json", str);
}
async function nextSequence(inputNum) {
let data = await readSequenceJSON();
for (let i = 0; i <= inputNum; i++) {
let iSquared = i + i;
data.push({ i, iSquared });
}
writeSequenceJSON(data);
}
nextSequence(inputNum)
.then(() => {
console.log("done");
})
.catch((err) => {
console.log(err);
});

你已经有了答案。

一定是内存问题。

没有像这样的东西我可以计数并推送到JSON文件。一个文件可以和操作系统的限制一样大。

不要将JSON数据保存在内存中,而是保存在DB中。MongoDB以JSON格式提供数据。

最新更新