深入分析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 相关文章推荐
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
简单的Jquery全选功能
Nov 07 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
chrome调试javascript详解
Oct 21 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
Jan 22 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
Apr 04 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 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 PDO简单教程
2019/05/28 PHP
js对象的比较
2011/02/26 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
SQLite3中文编码 Python的实现
2017/01/11 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
django站点管理详解
2017/12/12 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python读取文本中的坐标方法
2018/10/14 Python
详解python做UI界面的方法
2019/02/27 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
公司JAVA开发面试题
2015/04/02 面试题
综合办公室主任职责
2013/12/16 职场文书
社团活动策划书范文
2014/01/09 职场文书
董事长助理岗位职责
2014/02/18 职场文书
公司合并协议书范本
2014/09/30 职场文书
邀请函的格式
2015/01/30 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
食品药品安全责任书
2015/05/11 职场文书
养成教育主题班会
2015/08/13 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android