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具有以下这些形式:
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":"[email protected]" }; 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":"[email protected]" }; 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":"[email protected]" }, { "Id":2, "Name":"Chris", "Age":24, "Address":{"City":"Beijing","ZipCode":"100085"}, "Email":"[email protected]" } ] 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