深入分析jquery解析json数据


Posted in Javascript onDecember 09, 2014

我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法。

JSON数据如下,是一个嵌套JSON:

{"comments":[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}]}

获取JSON数据,在jQuery中有一个简单的方法 $.getJSON() 可以实现。

下面引用的是官方API对$.getJSON()的说明:

jQuery.getJSON( url, [data,] [success(data, textStatus, jqXHR)] )

urlA string containing the URL to which the request is sent.

dataA map or string that is sent to the server with the request.

success(data, textStatus, jqXHR)A callback function that is executed if the request succeeds.

回调函数中接受三个参数,第一个书返回的数据,第二个是状态,第三个是jQuery的XMLHttpRequest,我们只使用到第一个参数。

$.each()是用来在回调函数中解析JSON数据的方法,下面是官方文档:

jQuery.each( collection, callback(indexInArray, valueOfElement) )

collectionThe object or array to iterate over.

callback(indexInArray, valueOfElement)The function that will be executed on every object.

$.each()方法接 受两个参数,第一个是需要遍历的对象集合(JSON对象集合),第二个是用来遍历的方法,这个方法又接受两个参数,第一个是遍历的index,第二个是当 前遍历的值。哈哈,有了$.each()方法JSON的解析就迎刃而解咯。(*^__^*) 嘻嘻……

function loadInfo() {

    $.getJSON("loadInfo", function(data) {

        $("#info").html("");//清空info内容         $.each(data.comments, function(i, item) {

            $("#info").append(

                    "<div>" + item.id + "</div>" + 

                    "<div>" + item.nickname    + "</div>" +                     "<div>" + item.content + "</div><hr/>");

        });

        });

}

正如上面,loadinfo是请求的地址,function(data){...}就是在请求成功后的回调函数,data封装了返回的JSON对象,在下面 的$.each(data.comments,function(i,item){...})方法中data.comments直接到达JSON数据内包 含的JSON数组:

[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}]

$.each()方法中的function就是对这个数组进行遍历,再通过操作DOM插入到合适的地方的。在遍历的过程中,我们可以很方便的访问当前遍历index(代码中的”i“)和当前遍历的值(代码中的”item“)。

上例的运行结果如下:

如果返回的JSON数据比较复杂,则只需多些$.each()进行遍历即可,嘿嘿。例如如下JSON数据:

{"comments":[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2,"nickname":"小强"}],

"content":"你是木头人,哈哈。","infomap":{"性别":"男","职业":"程序员",

"博客":"http:\/\/www.xxx.com\/codeplus\/"},"title":"123木头人"}

js如下:

function loadInfo() {

    $.getJSON("loadInfo", function(data) {

        $("#title").append(data.title+"<hr/>");

        $("#content").append(data.content+"<hr/>");

        //jquery解析map数据

        $.each(data.infomap,function(key,value){

            $("#mapinfo").append(key+"----"+value+"<br/><hr/>");

        });

        //解析数组

        $.each(data.comments, function(i, item) {

            $("#info").append(

                    "<div>" + item.id + "</div>" + 

                    "<div>" + item.nickname    + "</div>" +

                    "<div>" + item.content + "</div><hr/>");

        });

        });

}

值得注意的是,$.each()遍历Map的时候,function()中的参数是key和value,十分方便。

Javascript 相关文章推荐
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
Mar 24 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
关于Javascript模块化和命名空间管理的问题说明
Dec 06 Javascript
js获取当前页面路径示例讲解
Jan 08 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
javascript常用正则表达式汇总
Jul 31 Javascript
javascript入门教程基础篇
Nov 16 Javascript
js面向对象的写法
Feb 19 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 Javascript
JS异步堆栈追踪之为什么await胜过Promise
Apr 28 Javascript
WEB前端设计师常用工具集锦
Dec 09 #Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 #Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 #Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 #Javascript
jQuery on方法传递参数示例
Dec 09 #Javascript
jquery实现侧边弹出的垂直导航
Dec 09 #Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 #Javascript
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
门卫岗位安全职责
2013/12/13 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
教师对学生的评语
2014/04/28 职场文书
环保倡议书50字
2014/05/15 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
读后感作文评语
2014/12/25 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
竞聘书的秘诀
2019/04/02 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python