<script type="text/javascript">
function toJSONString(obj, indent) {
var re, indent;
// "||"用法
indent = indent || "";
switch (typeof(obj)) {
// 数值,布尔,函数
case "number" :
case "boolean" :
case "function" :
return (String(obj));
break;
// 字符串特殊符号处理
case "string" :
return ("\""
+ obj.replace(/([\"\'])/g, "\\$1").replace(/\r/, "\\r")
.replace(/\n/, "\\n").replace(/\t/, "\\t") + "\"");
break;
// 对象的转化
case "object" :
switch (obj.constructor) {
case Date :
return ("new Date(\"" + obj.toUTCString() + "\"))");
break;
case RegExp :
return ("(new RegExp(\""
+ String(obj.source.replace(/(\w)/g, "\\$l")
+ "\",\"" + (obj.global ? "g" : "")
+ (obj.ignoreCase ? "i" : "")
+ obj.multiline ? "m" : "") + "\"))");
break;
case Array :
re = new Array();
for (var i = 0; i < obj.length; i++) {
re.push(toJSONString(obj[i]));
}
return ("[" + re.join(",") + "]");
break;
default :
re = new Array();
for (var i in obj)
re.push(indent + "\t" + toJSONString(i, "\t" + indent)
+ ":" + toJSONString(obj[i], "\t" + indent));
return ("{\r\n" + re.join(",\r\n") + "\r\n" + indent + "}");
break;
}
}
}
// 测试
var obj = new Object();
obj.sb = "caonima";
obj.nb = "caoniba";
obj.func = function() {
alert("caonima");
}
var str = toJSONString(obj);
// 将JSON字符串转为对象
eval("newObj=" + str);
alert(newObj.sb);
</script>
将普通对象转化为JSON对象
最新推荐文章于 2024-11-19 19:42:54 发布