jQuery解析Json实例详解

 更新时间:2015年11月24日 09:51:04   作者:Faith-Soul-Anima  
这篇文章主要介绍了jQuery解析Json的方法,结合实例形式较为详细的分析了jQuery针对json的常用解析与转换技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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

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

 

特别注意:如果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);

以上代码执行结果如:

 

参见本例下载包中: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。输入结果如下图:

 

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

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

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

相关文章

  • 基于jQuery ztree实现表格风格的树状结构

    基于jQuery ztree实现表格风格的树状结构

    zTree 是一个依靠 jQuery 实现的多功能 “树插件”,zTree 是开源免费的软件。接下来通过本文给大家介绍基于jQuery ztree实现表格风格的树状结构,感兴趣的朋友一起看看吧
    2018-08-08
  • 让input框实现类似百度的搜索提示(基于jquery事件监听)

    让input框实现类似百度的搜索提示(基于jquery事件监听)

    让input框实现类似百度的搜索提示,oninput和onpropertychange事件监听,通过ajax获取json数据
    2014-01-01
  • jQuery选择器基础入门教程

    jQuery选择器基础入门教程

    这篇文章主要介绍了jQuery选择器基础知识,结合实例分析了jQuery选择器的功能、使用方法与相关操作技巧,需要的朋友可以参考下
    2016-05-05
  • 基于jquery实现的文字淡入淡出效果

    基于jquery实现的文字淡入淡出效果

    这篇文章介绍了jquery实现的文字淡入淡出效果实例,有需要的朋友可以参考一下
    2013-11-11
  • Jquery表单验证失败后不提交的解决方法

    Jquery表单验证失败后不提交的解决方法

    很多人可能都会遇到在调试的时候用了return了false,可为什么还会提交呢?这个问题我最近也碰到了,尝试了多次也没有用,后来终于发现了其中的问题,下面分享处理给大家,让同样遇到这个问题的朋友们能够看看,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • jQuery无刷新上传之uploadify简单代码

    jQuery无刷新上传之uploadify简单代码

    项目需要实现一个无刷新批量文件上传功能,仔细研究了下,发现JQuery 提供的Uploadify插件十分不错,有兴趣的可以了解一下。
    2017-01-01
  • 12款经典的白富美型—jquery图片轮播插件—前端开发必备

    12款经典的白富美型—jquery图片轮播插件—前端开发必备

    图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果,本文向大家推荐12款实用的 jQuery 图片轮播效果插件感兴趣的朋友可以了解下哦
    2013-01-01
  • Jquery元素追加和删除的实现方法

    Jquery元素追加和删除的实现方法

    下面小编就为大家带来一篇Jquery元素追加和删除的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • jQuery事件绑定on()、bind()与delegate() 方法详解

    jQuery事件绑定on()、bind()与delegate() 方法详解

    这篇文章主要详细介绍了jQuery事件绑定的三种方法,分别是on()、bind()与delegate(),十分的浅显易懂,有需要的小伙伴可以参考下。
    2015-06-06
  • jQuery 在图片和文字中插入内容实例

    jQuery 在图片和文字中插入内容实例

    jQuery是一种流行的JavaScript库,可以轻松地在网页中插入图片和文字。通过使用jQuery的插入功能,您可以在网页上动态地添加内容,从而提高用户体验。本文将介绍如何使用jQuery在图片和文字中插入内容,并提供一些实用的代码示例。
    2023-06-06

最新评论