项目要求兼容版本ie6,7,由于以前的代码中大量使用JSON.*的方法来处理数据,所以在这两个浏览器上都报错无法使用。虽然网上有现成的json2.js,但是它的源代码太大了,所以就自己实现了一个简易版JSON封装。
JSON对象提供parse和stringify两个函数,下面是实现的代码。
if(!window.JSON) window.JSON={
// begin
stringify:function callee(o){
// 匹配布尔值和null,undefined在json中用null表示,其他的就是自身
if(o===true||o==undefined)return o===undefined?null:o;
switch(o.constructor){
// 处理数字,字符串,数组,对象
case Number:return o;
case String:return '"'+o.replace(/\"/g,'\\"')+'"';
case Array:return '['+(function(){
var r=[],i=0;
for(;i<o.length;i++)
r.push(callee(o[i]));
return r.join(',');
})()+']';
case Object:return '{'+(function(){
var r=[];
for(var i in o)
r.push(callee(i+'')+':'+callee(o[i]));
return r.join(',');
})()+'}';
// 其他类型的需要报错,比如json中包含function
default:
throw ['Not matches: ',o];
}
},
parse:function(s){
return eval('('+s+')');
}
// end
};
因为ie6,7浏览器上没有控制台,调试很麻烦,所以就不做在线演示。
相关文档
暂无
随便看看
畅言模块加载中