jQuery解析Json实例详解


Posted in Javascript onNovember 24, 2015

本文实例讲述了jQuery解析Json的方法。分享给大家供大家参考,具体如下:

前言

在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换、JSON数据的解析是关键。

先明确2个概念例如:

JSON字符串:

var str1 = '{ "name": "deyuyi", "sex": "man" }';

JSON对象:
var str2 = { "name": "deluyi", "sex": "man" };

可以简单这样理解:

JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方法)一样;

JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert()他;

一、JSON字符串转换为JSON对象

要使用上面的str1,必须使用下面的方法先转化为JSON对象:

A:eval函数

eval函数可以直接将本质符合或者近似符合JSON格式的字符串转换为JSON对象,使用方式如:

eval('(' + str + ')'); //其中str就是满足本标题描述的字符串

//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = eval('(' + str + ')'); 
alert( obj.name);
var str2="{ 'name': 'John' }";
var obj2 = eval('(' + str2 + ')'); 
alert( obj2.name);
var str3="{ name: 'John' }";
var obj3 = eval('(' + str3 + ')'); 
alert( obj3.name);

以上均会输出结果“john”。

Eval方式可以转换以下标准和非标准格式字符串:

var str="{ 'name': 'John' }";
var str2='{ "name": "John" }';
var str3="{ name: 'John' }";

参见本例下载包中:JqueryDemo1.html

B:parseJSON函数

另一种将标准字符串转换为JSON对象的函数是parseJSON(),使用方式如jQuery.parseJSON(str)//其中str就是满足本标题描述的字符串

//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = jQuery.parseJSON(str)
alert("1"+ obj.name);

以上均会输出结果“john”。

此种方式仅支持标准格式:var str='{ "name": "John" }';

参见本例下载包中:JqueryDemo2.html

C:JSON.parse函数

还有一种将标准字符串转换为JSON对象的函数是JSON.parse(),使用方式如JSON.parse(str)//其中str就是满足本标题描述的字符串

var str = '{ "name": "mady", "age": "24" }';
var obj = JSON.parse(str);
alert(obj.name);

以上均会输出结果“john”。

此种方式仅支持标准格式:var str='{ "name": "John" }';

参见本例下载包中:JqueryDemo3.html

以上结果一致,均输出姓名,如下图:

 jQuery解析Json实例详解

特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。

D:Other方式

如果忍不住想犯错,十分十分想解析非标准、非正规字符串,如:

{name:mady,age:23}

或者
{name:'mady',age:23}

以及其他的你能想到的各种本质正确的非法格式,那么有扩展库可以解决

jquery-json 扩展库

下载地址在这里:http://code.google.com/p/jquery-json/

这个库用来扩展 jQuery ,对于 JSON 的使用,扩展了两个函数:toJSON和parseJSON

toJSON 函数用来将一个普通的 JavaScript 对象序列化为 JSON 对象。
parseJSON函数用来将一个普通的 JavaScript 对象序列化为 JSON 对象too。

var data=$.toJSON({ x: 2, y: 3 }); 
var obj = jQuery.parseJSON(data); 
alert(obj.x); 
var str = {plugin: 'jquery-json', version: 2.3}; 
var data2=$.toJSON(str); 
var obj2 = jQuery.parseJSON(data2); 
alert(obj2.plugin);

以上代码执行结果如:

 jQuery解析Json实例详解jQuery解析Json实例详解

参见本例下载包中:JqueryDemo5.html

二、将JSON对象转换为字符串

可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。
例如:

var last=obj.toJSONString(); //将JSON对象转化为JSON字符

或者
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
alert(last);

三、解析读取JSON

我们通过各种方式将字符串转换为JSON对象后就是解析他了。
如上面的例子:

var str2 = { "name": "mady", "sex": "man" };

就可以这样读取:
alert(str2.name);//和C#一样直接往出点…

弹出” mady”。
我们遇到的JSON很少有这么简单的,比如复杂一点的JSON对象如:
var str={"GetUserPostByIdResult":{"Age":"33","ID":"2server","Name":"mady"}};

解析用:
      alert(str.GetUserPostByIdResult.Name);//一次点不出来,我多点几次
弹出:”mady”。

再再复杂一点的如:

var data=" { root: [ {'name':'6200','value':'0'}, {'name':'6101','value':'xa'}, {'name':'6102','value':'beijing'}, {'name':'6103','value':'haerbin'}]}";

如果你想单挑的话,解析用:
alert(dataObj.root[0].name);

弹出:“6200”。

如果你想群挑的话,解析用:

$.each(dataObj.root, function(index, item) {
  $("#info").append(
      "<div>" +index+":"+ item.name + "</div>" + 
      "<div>" +index+":"+ item.value + "</div><hr/>");
});

其中这个“#info”是个DIV的ID。输入结果如下图:

 jQuery解析Json实例详解

参见本例下载包中:JqueryDemo4.html

注意:本例如果要使用其他转换函数请更改字符串内单引号为双引号,外引号为单引号。
本文完整实例代码代码点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中的字符串操作详解
Nov 12 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
微信小程序登录session的使用
Mar 17 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
Apr 15 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
全面解析Bootstrap表单使用方法(表单控件)
Nov 24 #Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 #Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 #Javascript
jquery彩色投票进度条简单实例演示
Jul 23 #Javascript
js生成随机数的过程解析
Nov 24 #Javascript
jquery制作图片时钟特效
Mar 30 #Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 #Javascript
You might like
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
vue.js表格分页示例
2016/10/18 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
迎接领导欢迎词
2014/01/11 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
父母寄语大全
2014/04/12 职场文书
活动总结格式范文
2014/04/26 职场文书
村道德模范事迹材料
2014/08/28 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
优秀党员申报材料
2014/12/18 职场文书
千手观音观后感
2015/06/03 职场文书