JSON(JavaScript Object Notation),是一种轻量级的数据交换格式,易于人阅读和编写。同时也易于机器解析和生成。它采用完全独立于语言的文本格式,是理想的数据交换格式;并且JSON是JS原生格式,这就意味着在JS中处理 JSON数据可以不需要任何特殊的 API 或工具包。
目前很多框架都支持JSON格式的数据,如ExtJs、Flex、JQuery等,这些Ajax框架中广泛使用JSON格式作为交互,并一直推荐用户使用;不仅仅如此,目前主流的浏览器已经都支持JSON;并且JSON在各种语言(包括Java、C#、php、asp等)上都有对应的转换包,只需要引入就能很轻易的使用JSON格式数据。为了方便,以下的例子全部使用javascript。
Json数据结构介绍
JSON结构很简单,和Java里面的HashMap结构类似,都是以“名称/值”的集合。名称是字符串类型,值支持简单数据类型(string、number、true
、false
、 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、已经得到大力推广并被认同,在各种语言上的各种生成和解析工具比较齐全,资料很丰富。
缺点:
1、XML文件格式文件庞大,格式复杂,传输占用带宽;
2、服务器端和客户端都需要代码来解析XML,这样服务器端和客户端代码就会变得复杂和难以维护;
3、为了考虑到不同浏览器的兼容,需要在客户端重复编写很多代码来兼容不同浏览器解析XML的方式;
4、服务器端和客户端解析XML花费资源和时间。
使用JSON作为传输格式的优势:
1、格式简单,易于读写,格式经过压缩,带宽占用小;
2、易于解析,客户端JavaScript可以直接通过eval()进行JSON数据的读取;
3、扩展性好,在javascript中有着XML无法比拟的绝对优势;
4、支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等语言服务器端语言,并都有相应的解析工具或包,便于服务器端的解析;
5、简化了服务器端和客户端的代码开发量,因为JSON格式能够直接为服务器端或客户端代码使用,而不需要再进行解析,这样就提高了开发速度和易于维护。
6、在目前比较流行的Ajax框架中,都支持并推荐使用JSON格式,并且在Web Service中也在逐步推广。
缺点:
1、 推广力度不够强,使用还不够广泛,通用性不是很强;
2、 相关资料相对而言比较少;
3、 JSON格式目前在Web Service中推广还属于初级阶段。
小结
Json是一种轻量级的数据交换格式,非常适合于服务器与JavaScript 的交互,它已经是javascript标准的一部分,在目前很多Ajax框架中都得到广泛的使用。
JSON官方网站:http://www.json.org