代码改变世界

介绍JSON

2006-11-09 18:04  qy1141  阅读(377)  评论(0编辑  收藏  举报
    相信大家在学习Ajax的时候,碰到数据类型转化的时候一般都会用到JSON,那么到底什么是JSON呢,经过鄙人查资料,总结如下:
JSON(javascript object notation)是一种轻量级的数据交换格式。易于人们的阅读,同时也易于机器的解析与生成,它基于Javascript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, Javascript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON构建于这样的一种结构:名/值对的集合,在不同的语言中它被理解成对象,而在大部分语言中它被理解为数组。
JSON的形式如下:
    对象:是一个无序的“名称/值”对集合,一个对象以“{”开始,以“}”结束。
    名称/值对:名称后跟一个“:”,接着就应是这个名称对应的值,每个“名称/值”对以一个“,”分隔。    数组:是值的有序集合, 数组以“[”开始,以“]”结束,数组中的值以“,”分隔。
    值:可以是双引号引起来的字符串(string),数值(number),对象,true,false,null,数组等。
    字符串:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
    好了废话少说,来看一个用XML 和JSON 表示魔兽英雄名单。
用XML表示:
<魔兽争霸英雄>
  <人族>
    <英雄>
      <名称>大法师</名称>
      <智力>25</智力>
      <力量>18</力量>
      <敏捷>20</敏捷>
    </英雄>
    <英雄>
      <名称>山丘之王</名称>
      <智力>21</智力>
      <力量>27</力量>
      <敏捷>22</敏捷>
    </英雄>
    <英雄>
      <名称>神圣骑士</名称>
      <智力>20</智力>
      <力量>28</力量>
      <敏捷>23</敏捷>
    </英雄>
    <英雄>
      <名称>血魔法师</名称>
      <智力>24</智力>
      <力量>20</力量>
      <敏捷>25</敏捷>
    </英雄>
  </人族>
</魔兽争霸英雄>
用JSON表示:
         {人族英雄:[
             {
               名称:"大法师",
               智力:25,
               力量:18,
               敏捷:20
             },
             {
               名称:"山丘之王",
               智力:21,
               力量:27,
               敏捷:22
             },
             {
               名称:"神圣骑士,
               智力:20,
               力量:28,
               敏捷:23
             },
             {
               名称:"血魔法师",
               智力:24,
               力量:20,
               敏捷:26
             }
            ]
            }
    可以通过方法parseJSON()来将字符串转换成一个对象,同样也可以用方法toJSONString()来将一个对象转换为一个字符串。注意:如果字符串不符合JSON规范,则用方法就会抛出异常。要使用这些方法,首先要引用json.js  。
    JSON不仅减少了解析XML解析带来的性能问题和兼容性问题,而且对于Javascript来说非常容易使用,可以方便的通过遍历数组以及访问对象属性来获取数据,其可读性也不错,基本具备了结构化数据的性质。不得不说是一个很好的办法,而且事实上google maps就没有采用XML传递数据,而是采用了JSON方案。
   
   链接 :
http://www.json.org/ 。