深入分析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 相关文章推荐
javascript 写类方式之二
Jul 05 Javascript
FireFox下XML对象转化成字符串的解决方法
Dec 09 Javascript
js文件Cookie存取值示例代码
Feb 20 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 Javascript
值得分享的Bootstrap Table使用教程
Nov 23 Javascript
jQuery实现二维码扫描功能
Jan 09 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
vue+vue-validator 表单验证功能的实现代码
Nov 13 Javascript
JavaScript设计模式之单例模式简单实例教程
Jul 02 Javascript
简单学习5种处理Vue.js异常的方法
Jun 17 Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
JavaScript中CreateTextFile函数
Aug 30 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
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python字符串循环左移
2019/03/08 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
python Xpath语法的使用
2020/11/26 Python
Python 多进程原理及实现
2020/12/21 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
交通安全寄语大全
2014/04/08 职场文书
关于责任的演讲稿
2014/05/20 职场文书
教师个人培训总结
2015/02/11 职场文书
家长通知书家长意见
2015/06/03 职场文书
汶川大地震感悟
2015/08/10 职场文书
学习委员竞选稿
2015/11/20 职场文书