问题:有一个方法对象需要转化成字符串显示在编辑器中,发现转化的结果是"{}"
应用场景:需要将转化后的字符串放在代码编辑器中,用的插件是ace-builder。
最终实现结果: 能在ace-builder编辑器中编辑方法,编辑的保存结果还能够还原出来方法对象。
问题:有一个方法对象需要转化成字符串显示在编辑器中,发现转化的结果是"{}"
应用场景:需要将转化后的字符串放在代码编辑器中,用的插件是ace-builder。
最终实现结果: 能在ace-builder编辑器中编辑方法,编辑的保存结果还能够还原出来方法对象。
function serialize(obj, name){
var result = "";
function serializeInternal(o, path) {
for (p in o) {
var value = o[p];
if (typeof value != "object") {
if (typeof value == "string") {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"":p) + "] = " + "\"" + value.replace(/\"/g,"\\\"") + "\""+";";
}else {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"":p) + "] = " + value+";";
}
}
else {
if (value instanceof Array) {
result += "\n" + path +"[" + (isNaN(p)?"\""+p+"\"":p) + "]"+"="+"new Array();";
serializeInternal(value, path + "[" + (isNaN(p)?"\""+p+"\"":p) + "]");
} else {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"":p) + "]"+"="+"new Object();";
serializeInternal(value, path +"[" + (isNaN(p)?"\""+p+"\"":p) + "]");
}
}
}
}
serializeInternal(obj, name);
return result;
}
通过eval方法执行以上的语句就可以完整的还原a对象
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
undefined
、任意的函数以及symbol
值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成null
(出现在数组中时),详情见JSON.stringify()