注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Start Know

自分を信じて、自分で一定でいけます

 
 
 

日志

 
 

JSON技术介绍  

2009-04-02 21:51:48|  分类: JS---JSON |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词。我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据。然而,由于Ajax和REST技术的出现影响了应用程序架构,这迫使人们开始寻求`XML的替代品,如:JavaScript Object Notation(JSON)。

JSON 作为一种更轻、更友好的 Web services客户端的格式(多采用浏览器的形式或访问 REST风格 Web服务的Ajax应用程序的形式)引起了 Web 服务供应商的注意。通常AJAX通过返回XML格式的数据,然后再通过客户端复杂的JavaScript脚本解析和渲染这些XML格式的数据。JSON(读Jason)是为了能够使得数据格式成为一种标准,更简单的被JavaScript解析。

本文将阐述JSON在Web services设计中备受推崇的原因,以及它作为XML替代方案的主要优势和局限性。文中还会深入探讨:随着相应的Web 服务客户端选择使用JSON,如何才能便捷地在Java Web services中生成JSON输出。

json的官方文档:http://www.json.org/json-zh.html

JSON的优点

  • 轻量级的数据交换格式

  • 人们读写更加容易

  • 易于机器的解析和生成

  • 能够通过JavaScript中eval()函数解析JSON

  • JSON支持多语言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.

JSON语法是一种用于传输和生成数据的协定,很类似于C家族的语言,所以很容易被C家族的语言所解析。

对象:对象包含再{}之间

属性:采用Key-Value对来表示。属性之间使用逗号分开。  string : value

数组:数组存放再[]之间   [ elements ]

元素:元素之间用逗号分开

值:值可以是字符串,数字,对象,数组,true,false,null

例子:

JSON

{"menu": {  

   "id": "file",

   "value": "File:",  

   "popup": {  

     "menuitem": [

       {"value": "New", "onclick": "CreateNewDoc()"},

       {"value": "Open", "onclick": "OpenDoc()"},  

       {"value": "Close", "onclick": "CloseDoc()"} ]

   }

}}

XML

<menu id="file" value="File" >

   <popup>

     <menuitem value="New" onclick="CreateNewDoc()" />

     <menuitem value="Open" onclick="OpenDoc()" />

     <menuitem value="Close" onclick="CloseDoc()" />

   </popup>

</menu>

XML 的作用是格式化数据内容。如果我们不用XML还有什么更好的方法吗?这个答案是JSON。介绍JSON之前我先介绍一下JavaScript这门脚本语 言。脚本语言自身有动态执行的天赋。即我们可以把想要执行的语句放在字符串里,通过eval()这个动态执行函数来执行。字符串里的内容会像我们写的脚本 一样被执行。

<HTML>

<HEAD>

 <TITLE>eval example 1</TITLE>

</HEAD>

<BODY>

 <script>

  str = "alert('hello')";

  eval(str);

 </script>

</BODY>

</HTML>  

打开页面会弹出hello窗口。我们可以在字符串中放任何脚本语句,包括声明语句,等等一系列东西,比如:

<HTML>

<HEAD>

<TITLE>eval example 2</TITLE>

</HEAD>

<BODY>

<script>

 define = "{name:'Michael',email:'17bity@gmail.com'}";

 eval("data = "+define);

 alert("name:"+data.name);

 alert("email:"+data.email);

</script>

</BODY>

</HTML>

如果我们在后台异步传来的文本是JavaScript的声明语句,那么不是一条eval方法就能解析了?对于解析复杂的XML,这样的效率是多么大的提高啊!现在就来告诉你什么是JSON:JavaScript Object Notation。我更愿意把它翻译为JavaScript对象声明。比如要从后台载入一些通讯录的信息,如果写成XML,如下:

<contact>

 <friend>

  <name>Michael</name>

  <email>17bity@gmail.com</email>

  <homepage>http://www.jialing.net</homepage>

 </friend>

 <friend>

  <name>John</name>

  <email>john@gmail.com</email>

  <homepage>http://www.john.com</homepage>

 </friend>

 <friend>

  <name>Peggy</name>

  <email>peggy@gmail.com</email>

  <homepage>http://www.peggy.com</homepage>

 </friend>

</contact>

而写成JSON呢,就如下面:

[

{

 name:"Michael",

 email:"17bity@gmail.com",

 homepage:"http://www.jialing.net"

},

{

 name:"John",

 email:"john@gmail.com",

 homepage:"http://www.jobn.com"

},

{

 name:"Peggy",

 email:"peggy@gmail.com",

 homepage:"http://www.peggy.com"

}

]

简单的不只是表达上,最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范,JavaScrip会自动帮你解析好 的。Ajax中使用JSON的基本方法是前台载入后台声明JavaScript对象的字符串,用eval方法来将它转为实际的对象,最后通过 DHTML更新页面信息。

  评论这张
 
阅读(588)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017