我计划将JS对象存储在数据库中,但导航器返回" Uncaught RangeError:超出最大调用堆栈大小等对象"使用JSON.stringify(object)时。
如何将序列化为JSON大型javascript对象(如导航器对象)(无需修剪)?
答案 0 :(得分:1)
如果数据非常庞大并且需要插入到数据库中,那么它肯定能够被规范化为更多的子实体和分组,这将使数据变为更小的块。然后迭代这些数据组并将它们转换为json并进一步保存可能会对您有所帮助。
答案 1 :(得分:1)
你可以使用JSON.stringify中很少使用的第二个参数对JSON进行安全“中断”。 这有助于了解为什么导航器永远没有足够的空间:
var used=[];
var str=JSON.stringify(navigator, function(a,b,c){
if(used.indexOf(b)===-1 && used.length < 100 ){
used.push(b);
return b;
}
});
alert(str);
//shows: {"geolocation":{},"webkitPersistentStorage":{},"webkitTemporaryStorage":{},"onLine":true,"vendorSub":"","vendor":"Google Inc.","productSub":"20030107","product":"Gecko","mimeTypes":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{"0":{"enabledPlugin":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
你可以在100次重复之后获得积分,但如果只有它可以...... 我敢打赌,每次调用都会有一个新的对象,所以你永远不会看到同一个对象两次。
更改100到5000会导致铬崩溃,但不会提供任何新属性。