使用一个似乎太嵌套的对象并且我想要进行硬克隆,我得到了一个
var copy = JSON.parse(JSON.stringify(big_object));
-> RangeError: Invalid string length for a too large string
我通过在跳过第一个嵌套层
的同时克隆它来解决这个问题var copy = {};
for (o in big_object) {
copy[o] = JSON.parse(JSON.stringify(big_object[o]));
}
但我想知道这个限制是什么?在我的情况下,我通过执行以下操作得到此错误:
var objs = {};
var objs.obj1 = JSON.parse(obj1);
var objs.obj2 = JSON.parse(obj2);
var objs.obj3 = JSON.parse(obj3);
var objs.obj4 = JSON.parse(obj4);
var objs.obj5 = JSON.parse(obj5);
....
var objs.obj6 = JSON.parse(objn);
....
var copy = JSON.parse(JSON.stringify(objs));
其中obj1..n是用户决定处理的每个~40 Mb的JSON文件。当我处理7个文件时,没问题。当我处理8个文件时,我收到错误。
*大小为1.9Gb,这似乎不是我的情况(见 Is there a limit on the size of a string in JSON with Node.js?)