这个是基本的实现:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>json-to-string</TITLE>
<METANAME="Generator"CONTENT="EditPlus">
<METANAME="Author"CONTENT="emu">
<METANAME="Keywords"CONTENT="jsonconvert">
<METANAME="Description"CONTENT="convertajavascriptobjectintoaJSONstring">
</HEAD>
<BODY>
<SCRIPTLANGUAGE="JavaScript">
<!--
vardata={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:""}]}]}]}}
functionobj2str(o){
varr=[];
if(typeofo=="string")return"""+o.replace(/(['"\])/g,"\$1").replace(/( )/g,"\n").replace(/( )/g,"\r").replace(/( )/g,"\t")+""";
if(typeofo=="object"){
if(!o.sort){
r[0]="{"
for(variino){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(vari=0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
returnr.join("");
}
returno.toString();
}
alert(obj2str(data))
//-->
</SCRIPT>
</BODY>
</HTML>
要是想重载系统的native code函数(比如toString,join),就要根据不同的浏览器上不同的内部函数的具体表现做特殊对待了。比如重载toString函数在IE里面是默认遍历不到的,而firefox偏偏就可以。下面的例子在IE和firefox下面测试通过:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>json-to-string</TITLE>
<METANAME="Generator"CONTENT="EditPlus">
<METANAME="Author"CONTENT="emu">
<METANAME="Keywords"CONTENT="jsonconvert">
<METANAME="Description"CONTENT="convertajavascriptobjectintoaJSONstring">
</HEAD>
<BODY>
<SCRIPTLANGUAGE="JavaScript">
<!--
vardata={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(){returnobj2str(this)}}
functionobj2str(o){
varr=[];
if(typeofo=="string")return"""+o.replace(/(['"\])/g,"\$1").replace(/( )/g,"\n").replace(/( )/g,"\r").replace(/( )/g,"\t")+""";
if(typeofo=="object"){
if(!o.sort){
r[0]="{"
for(variino){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
if(!!document.all&&!/^ ?functions*toString()s*{ ?s*[nativecode] ?s*} ?s*$/.test(o.toString)){
r[r.length]="toString:"+o.toString.toString();
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(vari=0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
returnr.join("");
}
returno.toString();
}
alert(obj2str(data))
//-->
</SCRIPT>
</BODY>
</HTML>
原文链接
分享到:
相关推荐
在此次交流会上,Twinsen(梁璟彪)分享了主题为《一专多长》的演讲,探讨了在IT行业中如何培养多元化技能和专业化深度。 演讲首先引用了F1赛车手迈克尔·舒马赫和法拉利车队作为例子,强调了专业与团队协作的重要...
LBA2翻拍 一点大冒险2 / Twinsen在JavaScript中重新实现的奥德赛/ Three.js / React(或)愿景/目标阶段1:重新实现LBA2游戏引擎应该看起来和原来一样玩完全重新设计而不是基于分解的方法关注代码质量,使其易于阅读...
"lu:从code.google.com/p/projects-twinsen自动导出"是一个项目,它源自Google Code托管平台上的"projects-twinsen"项目,并被转换或导出到其他存储库。这个项目与Java编程语言有关,因此我们可以推测这可能是一个用...
3D-lba2remake.zip,小冒险2/twinsen的odyssey在javascript/3.js/react中的重新实现,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。
这段代码指定了网页的字符编码为gb2312,使得中文文字能够自动换行。 ### 第四招:定时自动跳转 有些网页会在一定时间后自动跳转到另一个页面,这可以通过在HTML头部加入`meta`标签来实现。例如: ```html ; url=...
好不容易到一个周末了,原定安排是去D2的但是因为时间安排不过来,所以能抽空写写。早前的讨论不了了之,其实这一点都不是Twinsen的风格。 其实想重提下那个话题,一直都在忙这忙那的没时间。好不容易到一个周末了,...
随着网页设计和开发对无障碍性的要求越来越高,使用具有语义性的类名就显得尤为重要。 语义化的CSS应该与HTML结构紧密关联,反映其内容和功能。例如,如果我们在HTML中有一个新闻列表,我们应该用类似`index_news`...
在Twinsen Liang的博客上看到一篇名为语义化单单的限定在html么?的文章,文中主要是提及了CSS的命名规则,仔细阅读后,我认为这个其实就是模块化思想。(作者也提了这一点)。 我没有看过CSS模块化的相关书籍,所以...
twinsen ---- 艾文王 ---- 余果 ---- 张鑫旭 ---- 大猫 ---- 飘飘 ---- 米随随 ---- 99css ---- 进步博客 ---- 万戈 ---- 任平生 ---- 小李刀刀 ---- 元云 ---- 珍妮 ---- 偷米饭 ---- 丁小倪 ---- 玉伯 ---- 拔赤 -...