应twinsen要求写了个转换js对象为json字符串的例子
这个是基本的转换例子
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> json-to-string </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="emu">
<META NAME="Keywords" CONTENT="json convert">
<META NAME="Description" CONTENT="convert a javascript object into a JSON string">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var data={host:{url:"ad.market.com",page:[{name:"all",area:[{name:"rightbanner",tname:"all",tclass:"none",type:"jpg",ad:[{url:"abc.gif",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""}]},{name:"leftbanner",tname:"all",tclass:"none",type:"jpg",ad:[{url:"",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""}]}]},{name:"index.htm",area:[{name:"rightbanner",tname:"index.htm",tclass:"none",type:"swf",ad:[{url:"abcdef.swf",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""}]},{name:"leftbanner",tname:"index.htm",tclass:"none",type:"text",ad:[{url:"",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""},{url:"",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""},{url:"",width:"",height:"",menu:"red",tran:"",href:"http://music.qq.com",alt:"aaaaaaaaa",target:"_blank",top:"",bottom:"",left:"",right:""}]}]}]}}
function obj2str(o){
var r = [];
if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeof o =="undefined") return "undefined";
if(typeof o == "object"){
if(o===null) return "null";
else if(!o.sort){
for(var i in o)
r.push(i+":"+obj2str(o[i]))
r="{"+r.join()+"}"
}else{
for(var i =0;i<o.length;i++)
r.push(obj2str(o[i]))
r="["+r.join()+"]"
}
return r;
}
return o.toString();
}
alert(obj2str(data))
//-->
</SCRIPT>
</BODY>
</HTML>
要是想重载系统的native code函数(比如toString,join),就要根据不同的浏览器上不同的内部函数的具体表现做特殊对待了。比如重载toString函数在IE里面是默认遍历不到的,而firefox偏偏就可以。下面的例子在IE和firefox下面测试通过:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> json-to-string </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="emu">
<META NAME="Keywords" CONTENT="json convert">
<META NAME="Description" CONTENT="convert a javascript object into a JSON string">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var data={host:{url:"ad.market.com",page:[{name:"all",area:[{name:"rightbanner",tn