序列化为JSON大型JS对象



我计划将JS对象存储在数据库中,但像navigator这样的对象在使用JSON.stringfy(对象).时返回"Uncaught RangeError:超过了最大调用堆栈大小"

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

您可以使用很少使用的JSON.stringify第二个参数在JSON上设置一个安全"break"。这有助于了解为什么导航器从来没有足够的空间:

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次就可以拿到分数,但如果可以的话,它可以持续一整夜。。。我打赌有一个getter每次调用都会发出一个新对象,所以你永远不会看到同一个对象两次。

将100更改为5000会使chrome崩溃,但不会产生新特性。

如果数据太大,需要插入数据库,那么它肯定能够被规范化为更多的子实体和分组,这将使数据变成更小的块。然后迭代这些数据组并将其转换为json并进一步保存可能会对您有所帮助。

最新更新