我看到如何将对象写入文件,如下所述:
How can I save objects to files in Node.js?但有没有办法获取对象并以允许我将对象重新加载到内存中的方式编写它,包括其方法?
解决方法
正如@AnthonySottile之前所说,这可能是非常危险的,我不确定它是否有一个很好的用例,但只是为了踢和咯咯,你需要编写自己的递归序列化器.像这样的东西:
@H_404_6@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();
}
这将处理大多数类型,但总有一个奇怪的球混乱它的机会所以我不会在生产中使用它.之后反序列化就像下面这样简单:
@H_404_6@eval('var test = ' + dump_to_string(obj))