- //扩展jQuery对json字符串的转换
- jQuery.extend({
- /***@see将json字符串转换为对象*@paramjson字符串*@return返回object,array,string等对象*/
- evalJSON:function(strJson){
- returneval("("+strJson+")");
- }
- });
- jQuery.extend({
- /***@see将javascript数据类型转换为json字符串*@param待转换对象,支持object,array,string,function,number,boolean,regexp*@return返回json字符串*/
- toJSON:function(object){
- vartype=typeofobject;
- if('object'==type){
- if(Array==object.constructor)type='array';
- elseif(RegExp==object.constructor)type='regexp';
- elsetype='object';
- }
- switch(type){
- case'undefined':
- case'unknown':
- return;
- break;
- case'function':
- case'boolean':
- case'regexp':
- returnobject.toString();
- break;
- case'number':
- returnisFinite(object)?object.toString():'null';
- break;
- case'string':
- return'"'+object.replace(/(\\|\")/g,"\\$1").replace(/\n|\r|\t/g,function(){
- vara=arguments[0];
- return(a=='\n')?'\\n':(a=='\r')?'\\r':(a=='\t')?'\\t':""
- })+'"';
- break;
- case'object':
- if(object===null)return'null';
- varresults=[];
- for(varpropertyinobject){
- varvalue=jQuery.toJSON(object[property]);
- if(value!==undefined)results.push(jQuery.toJSON(property)+':'+value);
- }
- return'{'+results.join(',')+'}';
- break;
- case'array':
- varresults=[];
- for(vari=0;i<object.length;i++){
- varvalue=jQuery.toJSON(object[i]);
- if(value!==undefined)results.push(value);
- }
- return'['+results.join(',')+']';
- break;
- }
- }
- });示例:
- varobj={
- name:"sean",
- friend:["fans","bruce","wawa"],
- action:function(){
- alert("gogogog")
- },
- boy:true,
- age:26,
- reg:/\b([a-z]+)\1\b/gi,
- child:{
- name:"none",
- age:-1
- }
- };
- varjson=$.toJSON(obj);
- varobjx=$.evalJSON(json);