JSON入门小例子

来源:互联网 发布:文玩淘宝店 编辑:程序博客网 时间:2024/05/01 04:42

JSON入门

什么是JSON
JSON(JavaScript Object Notation http://www.json .org/json -zh.html ),是一种轻量级的基于文本且独立于语言的数据交换格式,比XML更轻巧,它是XML数据交换的一个替代方案。它源于ECMAScript程序语言标准-第3版(ECMA-262 3rd Edition - December 1999)的子集,定义了便于表示结构化数据的一套格式规范,JSON规范是符合ECMAScript语法规范,这样按JSON规范描述出的字符串已是 javascript的原生代码串,这使之能通过eval动态的在JSON串与JavaScript对象之间进行转换。如果夸大来说,它是另一种理想的但有别于XML数据交换语言。
JSON建构于两种结构
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON语法规则
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

    数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。    值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。     字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。与C或者Java的字符串非常相似。

快速浏览JSON与XML表现形式
假如有一个employee对象,它有“姓、名、员工编号、头衔”等信息,先看看JSON是如何来描述它的:
Js代码

{      employee :      {          firstName: "John",          lastName : "Doe",          employeeNumber : 123,          title : "Accountant"      }  }   

再来看看XML是如何表示的,请看:

<employee>      <firstName>John</firstName>      <lastName>Doe</lastName>      <employeeNumber>123</employeeNumber>      <title>Accountant</title>  </employee>

从上面描述看,JSON表示法不正是JavaScript中对象描述的一种方式么?正确,这正是JavaScript中的对象构造的原生代码。既然是原生代码,我们把它转换成JavaScript中的对象,这样我们操作对象就比操作字符串方便多了。
把JSON字符串转换成JavaScript对象:

Js代码  <script type="text/javascript">          //使用script本身的函数eval将JSON串解析成对象      var e = eval(                      '({' +                      'employee : ' +                      '{' +                          'firstName: "John",' +                          'lastName : "Doe",' +                          'employeeNumber : 123,' +                          'title : "Accountant"' +                      '}' +                      '})'                  );          //现在我们可以使用e这个对象了,还可以以点的访问形式来访问对象的属性      alert(e.employee.firstName);      alert(e.employee.lastName);      alert(e.employee.employeeNumber);      alert(e.employee.title);  </script>