`
blueram
  • 浏览: 762567 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

扩展jQuery的json功能

阅读更多

本文在jQuery基础上扩展了其处理json字符串能力,伟大的jQuery将会更伟大,哈哈!

      用jQuery写javascript非常高效,jQuery对ajax的封装也非常到位;使用jQuery一段时间后发现,jQuery在处理json字符串方面功能不是很强,至少比prototype.js差远了,以前用习惯了prototype.js,在进行ajax开发时,处理json数据非常方便;而在jQuery中,只提供了一个简单的jQuery.getJSON()方法,并未提供jQuery本身对json数据的转换处理,将json字符串转换为javascript数据对象还比较容易利用eval()函数即可,但要将javascript的数据类型转换成json字符串就比较难了;刚开始不得同时使用prototype.js和jQuery,但由于著名的$符号函数,所以又不得不对jQuery进行一次转义,这样总究比较麻烦,而且prototype.js文件现在可不像以前那样小了,如果只是单纯的使用prototype.js的json处理功能,没有必要将其集成进来,为此本人对jQuery进行了一个简单的扩展,代码如下,只需要拷贝到你的代码中即可运行:

扩展代码://扩展jQuery对json字符串的转换
 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) {
          var value = jQuery.toJSON(object[property]);
          if (value !== undefined)
            results.push(jQuery.toJSON(property) + ':' + value);
        }
        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;
      }
  }
 });

 

示例:

var obj = {
   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
   }
  };
  
  var json = $.toJSON(obj);
  var objx = $.evalJSON(json);

哈哈,不错吧,现在用起来舒服多了!

分享到:
评论
2 楼 keanu196492 2010-09-01  
支持一下,的确,jquery和json.js就有冲突,json.js里面自带的toJSONString方法用不了,prototype.js的toJSON()方法是OK的,但是jquery没有类似的把json对象转成字符串的方法。

LZ写的这个可以用的,呵呵,1楼的json2.js我用了, 还是不行,看来jQuery和json.js真是冤家。
1 楼 legendswallow 2009-12-01  
可以使用json2.js,这个json网站推荐的js程序可以讲js对象转换成json文本。
例如:array.toJSONString();

相关推荐

    Jquery.json.js

    总结,`jQuery.json.js`这个文件可能是jQuery的一个扩展插件,专门用于增强jQuery对JSON的支持。在实际项目中,通过使用jQuery提供的这些方法,开发者可以轻松地处理JSON数据,实现与服务器的高效通信。同时,理解...

    扩展jQuery的json功能文.pdf

    这篇文章主要讲述了如何扩展jQuery以增强其处理JSON(JavaScript Object Notation)数据的能力。JSON是一种轻量级的数据交换格式,常用于前后端数据交互。在原生的jQuery库中,虽然提供了`jQuery.getJSON()`方法来...

    jQuery Json v2.6.0

    总的来说,jQuery JSON v2.6.0作为jQuery的一个扩展,极大地简化了在JavaScript中处理JSON数据的工作,提升了开发效率。通过理解和熟练运用`$.parseJSON()`和`$.toJSON()`,开发者可以更好地驾驭JSON数据,实现高效...

    jquery_json.rar_JSON_jquery_jquery-json_jquery.json_jquery.json.

    `jquery_json.rar` 提供的插件是jQuery对JSON的支持扩展,帮助开发者更方便地处理JSON数据。这个插件主要包括了两个主要功能:将JavaScript对象转换为JSON字符串(JSON.stringify的早期版本),以及将JSON字符串解析...

    jquery.json-2.3.min.js和jquery.json-2.3.js

    jquery.json-2.3.min.js和jquery.json-2.3.js jQuery为开发插件提拱了两个方法,分别是:jQuery.extend(object); 为扩展jQuery类本身 jQuery.fn.extend(object);给jQuery对象添加方法。

    jquery.jsoncookie.zip

    `jquery.jsoncookie`是针对jQuery的一个插件,它扩展了jQuery的功能,允许开发者在Cookie中存储和读取JSON格式的数据。Cookie是Web浏览器为服务器存储在用户设备上的一小段文本信息,用于跟踪用户状态、保存用户设置...

    jquery-json美化

    3. **jQuery插件**:"jQuery-JSON美化"可能是一个插件,它扩展了jQuery的功能,提供了便捷的API来格式化和展示JSON数据。这些插件通常会将JSON字符串转换为HTML结构,通过CSS样式使其更易阅读,例如使用预格式化文本...

    jquery.json-2.3.js

    在给定的资源“jquery.json-2.3.js”中,我们可以看到jQuery针对JSON进行的一系列扩展,使得在JavaScript中处理JSON数据变得更加简单和高效。 首先,jQuery JSON 2.3.js的核心功能是JSON的解析和序列化。解析JSON...

    jquery json 调用后台 案例

    在本文中,我们将深入探讨如何使用jQuery和JSON技术与ASP.NET后台进行交互,结合实际案例进行解析。jQuery是一个轻量级、高性能的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互。而JSON...

    struts jquery json案例

    jQuery的`$.ajax()`或`$.getJSON()`方法可以方便地实现这一功能。 3. **Struts后台处理**:在Struts框架中,Action接收到请求后,根据请求参数执行相应的业务逻辑。如果需要返回数据,可以使用JSON对象封装结果,...

    网页模板——jQuery查看json格式数据插件viewer.js.zip

    `viewer.js`插件还可能支持自定义样式和扩展功能,比如自定义展开/折叠图标、添加搜索功能等,这取决于具体实现和版本。在实际应用中,可以根据需求进行定制,以满足不同项目的需求。 总的来说,`viewer.js`是一个...

    jquery+json 无刷新分页

    本篇将详细介绍如何使用jQuery和JSON实现这种功能,以及如何在VS2008和SQL2000环境下开发此类实例。 ### 1. jQuery简介 jQuery是一个流行的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。它的API...

    4级级联菜单JQUERY+JSON版

    这个项目主要展示了如何在现代浏览器(如Chrome、Firefox、Opera以及IE11)中创建一个可扩展且功能丰富的四级菜单系统。 首先,jQuery是一个轻量级、高性能的JavaScript库,它简化了DOM操作、事件处理、动画制作和...

    jquery json饼图插件

    **jQuery JSON饼图插件详解** 在Web开发中,数据可视化是至关重要的,它能帮助用户更好地理解复杂的数据。jQuery作为一个流行的JavaScript库...在实际使用过程中,可以根据具体需求进行调整和扩展,实现更丰富的功能。

    前端项目-jquery-json-editor.zip

    7. **插件扩展**:jQuery-json-editor可能还允许开发者通过插件机制来扩展其功能,以满足特定场景的需求。 在实际开发中,这个库可以应用于各种场景,如后台管理系统中需要配置JSON数据的地方,或者需要用户输入...

    jquery.json-2.4.min.js

    总结来说,`jquery.json-2.4.min.js` 插件是jQuery的一个扩展,提供了JSON序列化和反序列化的功能,使得在JavaScript环境中处理JSON数据变得更加便捷和安全。在现代Web开发中,理解和掌握JSON以及相关的处理方法,...

    jQuery JSON动态获取表格数据代码.zip

    本示例"jQuery JSON动态获取表格数据代码.zip"是关于如何利用jQuery和JSON来动态地填充表格数据,同时提供了一些交互功能,如折叠和展开表格行。下面将详细解释相关知识点。 首先,jQuery库的使用: 1. DOM操作:...

    jquery.json.min.2.3.0.js;json2.js

    这些文件主要涉及jQuery库及其相关的扩展插件,以及JSON处理的相关功能。让我们详细探讨一下每个文件及其在IT领域的应用。 1. **jquery-1.4.2.min.js**:这是jQuery库的一个较早版本(1.4.2)。jQuery是一个广泛...

    jQuery方法扩展:type, toJSON, evalJSON

    然而,需要注意的是,`toJSON`并非jQuery的核心功能,而是来自一个名为"json2.js"的插件。在较新的jQuery版本中,可以使用JavaScript内置的`JSON.stringify`方法来达到相同的效果: ```javascript var data = {name...

Global site tag (gtag.js) - Google Analytics