浅谈JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写。同时也易于机器解析和生成。它采用完全独立于语言的文本格式,是理想的数据交换格式;并且JSONJS原生格式,这就意味着在JS中处理 JSON数据可以不需要任何特殊的 API 或工具包。

目前很多框架都支持JSON格式的数据,如ExtJsFlexJQuery等,这些Ajax框架中广泛使用JSON格式作为交互,并一直推荐用户使用;不仅仅如此,目前主流的浏览器已经都支持JSON;并且JSON在各种语言(包括JavaC#phpasp等)上都有对应的转换包,只需要引入就能很轻易的使用JSON格式数据。为了方便,以下的例子全部使用javascript

Json数据结构介绍

JSON结构很简单,和Java里面的HashMap结构类似,都是以“名称/值”的集合。名称是字符串类型,值支持简单数据类型(stringnumbertruefalse null)、对象和数组,并且支持嵌套和包含。在JSON中,字符串需要用双引号或单引号括起来,转义字符用/转义,单个对象是用{}括起来的,多个对象之间用逗号分开。并在外层用[]括起来(也就是对象数组)。

var user = {name:"jhon",userAge:28,parent:[{relationship:"mother",age:49},{relationship:"father",age:50}],say:function(word){alert("Hi!" + word);}};

for(var e in user) alert(e + ":" + user[e]);

user.say("World"); // 直接调用say方法

var jhon = eval(user); // 相当于jhon = new user();

jhon.say("World"); // 调用对象的say方法

上面就是一个简单的JSON例子,此段JSON数据看作一个对象(也可以是一个类,因为它已经包含了属性和方法),就是定义了一个用户名叫Jhon的用户,并定义了他的年龄及父母,并定义了一个say的方法,并且从上面也可以看到,javascript可以直接解析JSON格式数据,调用属性及方法;如果用XML来解析的话,将会比这复杂很多,并且效率也会低很多。

JSON PK XML

目前在Ajax框架(也包括在其他各个方向,如WebService)中,使用得比较广泛的,大家认同度比较高的是XML,但是当JSON出现后,XML的份额正在一点点的被蚕食,当然JSON不会取代XML,二者将会是一个并存的局面,JSON格式以其轻小简便的特性正在逐步被人接受,进而发展壮大,以下就对比一下二者的优劣:

使用XML作为传输格式的优势:

1、格式统一,符合标准;

2、容易与其他系统进行远程交互,数据共享比较方便;

3、扩展性好

4、已经得到大力推广并被认同,在各种语言上的各种生成和解析工具比较齐全,资料很丰富。

缺点:

1XML文件格式文件庞大,格式复杂,传输占用带宽;

2、服务器端和客户端都需要代码来解析XML,这样服务器端和客户端代码就会变得复杂和难以维护;

3、为了考虑到不同浏览器的兼容,需要在客户端重复编写很多代码来兼容不同浏览器解析XML的方式;

4、服务器端和客户端解析XML花费资源和时间。

使用JSON作为传输格式的优势:

1、格式简单,易于读写,格式经过压缩,带宽占用小;

2、易于解析,客户端JavaScript可以直接通过eval()进行JSON数据的读取;

3、扩展性好,在javascript中有着XML无法比拟的绝对优势;

4、支持多种语言,包括ActionScriptCC#ColdFusionJavaJavaScriptPerlPHPPythonRuby等语言服务器端语言,并都有相应的解析工具或包,便于服务器端的解析;

5、简化了服务器端和客户端的代码开发量,因为JSON格式能够直接为服务器端或客户端代码使用,而不需要再进行解析,这样就提高了开发速度和易于维护。

6、在目前比较流行的Ajax框架中,都支持并推荐使用JSON格式,并且在Web Service中也在逐步推广。

缺点:

1、  推广力度不够强,使用还不够广泛,通用性不是很强;

2、  相关资料相对而言比较少;

3、  JSON格式目前在Web Service中推广还属于初级阶段。

小结

         Json是一种轻量级的数据交换格式,非常适合于服务器与JavaScript 的交互,它已经是javascript标准的一部分,在目前很多Ajax框架中都得到广泛的使用。

JSON官方网站:http://www.json.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值