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建构于两种结构:
1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表 (hash table),有键列表(keyed list),或者关联数组 (associative array)。
2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
- 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
- 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
- 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
- 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
- 字符串(string)与C或者Java的字符串非常相似。
- 数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
- 空白可以加入到任何符号之间。 以下描述了完整的语言。(以上部分摘自:http://www.json.org/json-zh.html)
JSON没有变量或其他控制结构。JSON只用于数据传输。
JSON语法是基于对面字面量和数组字面量的JavaScript语法。当使用字面量时,将包括数据本身,但不包括生成数据的表达式。
1、 数据类型
JSON数据结构包含以下数据类型:字符、数字、布尔值(true/false)、null、对象,数组。
JSON字符串必须使用双引号括起来。它们使用标准的JavaScript转义序列。因此在以下列字符的前面要添加一个反斜线:
JSON具有以下这些形式:”(引号)、b(空格)、n(新行)、f(换页)、r(回车)、t(水平定位)、u(为Unicode字符增加4个数位)、\(反斜线符号)、/(正斜杠符号)。
2、对象字面量
JSON使用字面量来表示对象,如果有一个以上的成员对象,则在JSON中,可以将其表示为一个包含拥有两个对象的数组的对象。下列代码显示JOSN文本形式的user对象:
<script type="text/javascript"> var user = { "Id":1, "Name":"Hubery", "Age":23, "Address": { "City":"Beijing","ZipCode":"111111" }, "Email":"hubery@163.com" }; alert(user.Id); alert(user.Name); alert(user.Age); alert(user.Address.City); alert(user.Address.ZipCode); alert(user.Email); </script> 下面我们把Address属性定义成数组,用户有两个Address: <script type="text/javascript"> var user = { "Id":1, "Name":"Hubery", "Age":23, "Address": [ {"City":"Beijing","ZipCode":"111111"}, {"City":"Langfang","ZipCode":"222222"} ], "Email":"hubery@163.com" }; alert(user.Id); alert(user.Name); alert(user.Age); alert(user.Address[0].City);//还可以这样:alert(user.Address[0]["City"]); alert(user.Address[0].ZipCode); alert(user.Address[1].City); alert(user.Address[1].ZipCode); alert(user.Email); </script>
如果我们想要一个用户列表,能行吗?答案是,没问题!
<script type="text/javascript"> var user = [ { "Id":1, "Name":"Hubery", "Age":23, "Address": [ {"City":"Beijing","ZipCode":"111111"}, {"City":"Langfang","ZipCode":"222222"} ], "Email":"hubery@163.com" }, { "Id":2, "Name":"Chris", "Age":24, "Address":{"City":"Beijing","ZipCode":"100085"}, "Email":"chris@163.com" } ] alert("Id: "+user[0].Id+"\r\nName: "+ user[0].Name+"\r\nAge: "+ user[0].Age+"\r\nAddress: ("+ user[0].Address[0].City+","+user[0].Address[0].ZipCode+") ("+user[0].Address[1].City+","+user[0].Address[1].ZipCode+")\r\nEmail: "+ user[0].Email); alert("Id: "+user[1].Id+"\r\nName: "+ user[1].Name+"\r\nAge: "+ user[1].Age+"\r\nAddress: ("+ user[1].Address.City+","+user[1].Address.ZipCode+")\r\nEmail: "+ user[1].Email); </script>
先来个最简单的:
官方网站:http://www.json.org/
IBM工作室:http://www.ibm.com/developerworks/cn/web/wa-lo-json/
WIKI百科:http://en.wikipedia.org/wiki/JSON
YAHOO专区:http://developer.yahoo.com/common/json.html