﻿jQuery.extend(
   {
       /**  
       * @see  将json字符串转换为对象  
       * @param   json字符串  
       * @return 返回object,array,string等对象  
       */
       evalJSON: function(strJson) {
           return eval("(" + strJson + ")");
       }
   });
jQuery.extend(
   {
       /**  
       * @see  将javascript数据类型转换为json字符串  
       * @param 待转换对象,支持object,array,string,function,number,boolean,regexp  
       * @return 返回json字符串  
       */
       toJSON: function(object) {
           var type = typeof object;
           if ('object' == type) {
               if (Array == object.constructor)
                   type = 'array';
               else if (RegExp == object.constructor)
                   type = 'regexp';
               else
                   type = 'object';
           }
           switch (type) {
               case 'undefined':
               case 'unknown':
                   return;
                   break;
               case 'function':
               case 'boolean':
               case 'regexp':
                   return object.toString();
                   break;
               case 'number':
                   return isFinite(object) ? object.toString() : 'null';
                   break;
               case 'string':
                   return '"' + object.replace(/(\\|\")/g, "\\$1").replace(/\n|\r|\t/g,
         function() {
             var a = arguments[0];
             return (a == '\n') ? '\\n' :
                         (a == '\r') ? '\\r' :
                         (a == '\t') ? '\\t' : ""
         }) + '"';
                   break;
               case 'object':
                   if (object === null) return 'null';
                   var results = [];
                   for (var property in object) {
                       if (object[property]) {
                           var value = jQuery.toJSON(object[property]);
                           if (value !== undefined) {
                               results.push(jQuery.toJSON(property) + ':' + value);
                           }
                       } else {
                           results.push(property + ':null');
                       }
                   }
                   return '{' + results.join(',') + '}';
                   break;
               case 'array':
                   var results = [];
                   for (var i = 0; i < object.length; i++) {
                       var value = jQuery.toJSON(object[i]);
                       if (value !== undefined) results.push(value);
                   }
                   return '[' + results.join(',') + ']';
                   break;
           }
       }
   }); 
