就像@AnthonySottile之前说的那样,这可能非常危险,我不确定是否有很好的用例,但是对于踢和傻笑,您需要编写自己的递归序列化器。像这样:
var toString = Object.prototype.toString;function dump_object(obj) { var buff, prop; buff = []; for (prop in obj) { buff.push(dump_to_string(prop) + ': ' + dump_to_string(obj[prop])) } return '{' + buff.join(', ') + '}';}function dump_array(arr) { var buff, i, len; buff = []; for (i=0, len=arr.length; i<len; i++) { buff.push(dump_to_string(arr[i])); } return '[' + buff.join(', ') + ']';}function dump_to_string(obj) { if (toString.call(obj) == '[object Function]') { return obj.toString(); } else if (toString.call(obj) == '[object Array]') { return dump_array(obj); } else if (toString.call(obj) == '[object String]') { return '"' + obj.replace('"', '\"') + '"'; } else if (obj === Object(obj)) { return dump_object(obj); } return obj.toString();}
这将处理大多数类型,但是总是有一个奇怪的问题将其弄乱的机会,因此 我不会在生产中使用它 。之后,反序列化就像下面这样简单:
eval('var test = ' + dump_to_string(obj))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)