转换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 " ,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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stoneson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值