这个是基本的转换例子
<!
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>
< 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 " ,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: "" }]}]}]},toString: function (){ return obj2str( this )}}
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 == " object " ){
if(!o.sort){
for(var i in o)
r.push(i+ " : " +obj2str(o[i]));
if(!!document.all && !/^/n?function/s*toString/(/)/s*/{/n?/s*/[native code/]/n?/s*/}/n?/s*$/.test(o.toString)){
r.push( " toString: " +o.toString.toString());
}
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>
< 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: "" }]}]}]},toString: function (){ return obj2str( this )}}
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 == " object " ){
if(!o.sort){
for(var i in o)
r.push(i+ " : " +obj2str(o[i]));
if(!!document.all && !/^/n?function/s*toString/(/)/s*/{/n?/s*/[native code/]/n?/s*/}/n?/s*$/.test(o.toString)){
r.push( " toString: " +o.toString.toString());
}
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>