JSON简介和使用说明

JSON简介


JSON是JavaScript对象表示法,JavaScript Object Notation。类似于XML,是一种用来存储和交换文本信息的语法。它是一种轻量级的文本数据交换格式,独立于语言,具有自我描述性,更加易于理解。
JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言与平台。JSON解析器和JSON库支持许多不同的编程语言。
Javascript程序能够使用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。

JSON语法规则


JSON语法是Javascript对象表示法语法的子集。
  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON的数据的书写格式是:名称/值对。
名称/值对包括字段名称,后面一个冒号,然后是值:
"name":harvey
等价于这条JavaScript语句:
name = "harvey"

JSON值可以是:
  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON对象在花括号中书写:对象可以包含多个名称/值对。
{"id":1, "name":"harvey"}

JSON数组在方括号中书写,数组可包含多个对象。
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
在上面的例子中,对象“employees”是包含三个对象的数组。每个对象代表一条关于某人的记录。

JSON使用


把JSON文本转换为JavaScript对象


JSON最常用的用法之一,是从web服务器上读取JSON数据,将JSON数据转换为JavaScript对象,然后再网页中使用该数据。
由于JSON语法是JavaScript语法的子集,JavaScript函数eval()可用于将JSON文件转换为JavaScript对象。
eval()函数使用的是Javascript编译器,可解析JSON文件,然后生成JavaScript对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval("{"+txt+"}");

与XML对比


 XML 相对体积太大,传输效率低,JSON 体积较小,新颖,但还不够完善。

可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。

可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。

解码难度
XML的解析方式有两种:一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。凡是这样可扩展的结构数据解析起来一定都很困难。
JSON也同样如此。如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是太美妙了,可以写出很实用美观可读性强的代码。如果你是纯粹的前台开发人员,一定会非常喜欢JSON。但是如果你是一个应用开发人员,就不是那么喜欢了,毕竟xml才是真正的结构化标记语言,用于进行数据传递。
而如果不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,得到的结果也不尽人意。但是这样也不影响众多前台开发人员选择JSON。因为json.js中的toJSONString()就可以看到JSON的字符串结构。当然不是使用这个字符串,这样仍旧是噩梦。常用JSON的人看到这个字符串之后,就对JSON的结构很明了了,就更容易的操作JSON。以上是在Javascript中仅对于数据传递的xml与JSON的解析。在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml。如果JSON中存储Javascript复合对象,而且不知道其结构的话,我相信很多程序员也一样是哭着解析JSON的。
除了上述之外,JSON和XML还有另外一个很大的区别在于有效数据率。JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值