当使用JSON.stringify方法时,如果要把一个大的对象转换为json字符串时,有可能会出现“Argument too large”错误。这是因为JSON.stringify的默认最大栈大小为100,在处理大对象时会导致栈溢出。
解决该问题的方法是可以在调用JSON.stringify方法时,传入一个“replacer”函数作为第二个参数,该函数可以过滤不想要的属性,或者将大的对象分成多个小的对象。例如:
var largeObject = { ... }; // 一个大的对象 var jsonString = JSON.stringify(largeObject, function(key, value) { if (key === 'propertyNameToFilterOut') { return undefined; // 过滤掉不需要的属性 } else if (value instanceof Array) { return value.slice(0,100); // 如果属性是一个数组,则只返回前100个元素 } else { return value; } });
这样就可以避免“Argument too large”错误了。