序列化为JSON大型JS对象

时间:2013-06-26 04:03:31

标签: javascript serialization

我计划将JS对象存储在数据库中,但导航器返回" Uncaught RangeError:超出最大调用堆栈大小等对象"使用JSON.stringify(object)时。

如何将序列化为JSON大型javascript对象(如导航器对象)(无需修剪)?

2 个答案:

答案 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会导致铬崩溃,但不会提供任何新属性。