jquery JSON的解析方式


Posted in Javascript onJuly 25, 2009

这里考虑都考虑的是服务器返回的是JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。

这里首先给出JSON字符串集,字符串集如下:

var data=" 
{ 
root: 
[ 
{name:'1',value:'0'}, 
{name:'6101',value:'西安市'}, 
{name:'6102',value:'铜川市'}, 
{name:'6103',value:'宝鸡市'}, 
{name:'6104',value:'咸阳市'}, 
{name:'6105',value:'渭南市'}, 
{name:'6106',value:'延安市'}, 
{name:'6107',value:'汉中市'}, 
{name:'6108',value:'榆林市'}, 
{name:'6109',value:'安康市'}, 
{name:'6110',value:'商洛市'} 
] 
}";

这里以jquery异步获取的数据类型——json对象和字符串为依据,分别介绍两种方式获取到的结果处理方式。

1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:

var dataObj=eval("("+data+")");//转换为json对象
alert(dataObj.root.length);//输出root的子对象数量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}

//输出每个root子对象的名称和值
alert("name:"+item.name+",value:"+item.value);
})

注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。

2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例说明数据处理方法:

$.getJSON("http://gaoyusi.blog.163.com/",{param:"gaoyusi"},function(data){
//此处返回的data已经是json对象
//以下其他操作同第一种情况
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}

alert("name:"+item.name+",value:"+item.value);

});
});

这里特别需要注意的是方式1中的eval()方法是动态执行其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。所以可以采用一些规避了eval()的第三方客户端脚本库,比如JSON in JavaScript就提供了一个不超过3k的脚本库。

Javascript 相关文章推荐
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
尝试在让script的type属性等于text/html
Jan 15 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
JavaScript原型链示例分享
Jan 26 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
JavaScript中Math.SQRT2属性的使用详解
Jun 14 Javascript
基于Javascript实现弹出页面效果
Jan 01 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
jqPlot Option配置对象详解
Jul 25 #Javascript
jqPlot jquery的页面图表绘制工具
Jul 25 #Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 #Javascript
从父页面读取和操作iframe中内容方法
Jul 25 #Javascript
javaScript 数值型和字符串型之间的转换
Jul 25 #Javascript
JavaScript中null与undefined分析
Jul 25 #Javascript
js 字符串操作函数
Jul 25 #Javascript
You might like
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python爬取内容存入Excel实例
2019/02/20 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
试用期转正员工自我评价
2014/09/18 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
心得体会格式及范文
2016/01/25 职场文书
创业计划书之家政服务
2019/09/18 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
深入理解Vue的数据响应式
2021/05/15 Vue.js