nodejs json.stringify一个1GB内存不足的对象

我想json.stringify一个1 GB的对象,以便我可以写入磁盘。 我得到FATAL ERROR: JS Allocation failed - process out of memory

我可以做什么来成功地串联?

您可以手动一点一点地进行JSON.stringify(y) + ":" + JSON.stringify(x[y]) :如果yx的关键字,那么JSON.stringify(y) + ":" + JSON.stringify(x[y])为您提供一个段。

例如,使用fs.appendFileSync ,您可以使用:

 var output = "out.json"; fs.writeFileSync(output, "{"); var first = true; for(var y in x) { if(x.hasOwnProperty(y)) { if(first) first = false; else fs.appendFileSync(output, ","); fs.appendFileSync(output, JSON.stringify(y) + ":" + JSON.stringify(x[y])) } } fs.appendFileSync(output, "}"); 

您也可以使用写入stream

使用Object,Array检查器进行扩展

 var first, y, i$, ref$, len$, toString$ = {}.toString; switch (toString$.call(x).slice(8, -1)) { case 'Object': fs.writeFileSync(output, '{'); first = true; for (y in x) { if (x.hasOwnProperty(y)) { if (first) { first = false; } else { fs.appendFileSync(output, ','); } fs.appendFileSync(output, JSON.stringify(y) + ':' + JSON.stringify(x[y])); } } fs.appendFileSync(output, '}'); break; case 'Array': fs.writeFileSync(output, '['); first = true; for (i$ = 0, len$ = (ref$ = x).length; i$ < len$; ++i$) { y = ref$[i$]; if (first) { first = false; } else { fs.appendFileSync(output, ','); } fs.appendFileSync(output, JSON.stringify(y)); } fs.appendFileSync(output, ']'); break; default: fs.writeFileSync(output, JSON.stringify(x)); }