Core Json–JSON概述
下一篇: Core Json–JSON模型
JSON(JavaScript Object Notation)是一种基于文本的标准数据交换格式,使应用程序通过计算机网络交换数据。因为JSON独立于编程语言和计算平台,因此用Ruby ,Java/EE,Javascript,C#/.Net,PHP等编程语言写的程序,可以很容易的消耗和产生JSON数据。而与JSON相关的API和工具十分丰富,这让你很容易的将JSON运用在你喜爱的编程语言,IDE 和运行环境里。此外,流行的NoSQL数据库,诸如MongoDB和ConchBase,都是基于JSON的。
在2001年,JSON被道格拉斯.克罗克福德创建,并在RFC4627与IETF(因特网工程任务组)标准中被规定;详情见 http://tools.ietf.org/html/rfc4627。根据规范,JSON的IANA(互联网数字分配机构)媒体类型是应用/json,文件类型是json。
什么是JSON?
JSON是一种简单的数据格式,它有三种基本的数据结构:
键/值对。
对象。
数组。
有效的JSON文件总是被大括号围绕,像这样:
{ JSON-Data }
请注意,JSON社区的一些成员使用术语“字符串”而不是“文档”来描述JSON 。
为什么要用JSON?
在因特网上,JSON正逐渐代替XML成为首选的数据交换格式,这是因为JSON容易阅读并且它的结构匹配常见的编程概念,诸如对象和数组。JSON也比XML更高效(即更快的解析和网络传输),这是因为JSON更紧凑——没有开始和结束标签。
键/值对
键/值对看起来像这样:
{ "firstName": "John" }
属性名(即第一个名字)是被双引号环绕的字符串。值可以是字符串(如上面的例子),但这仅是有效数据类型中的一组。(请查看数据类型章节获取更多细节。)一些著名的科技公司申称他们使用JSON数据格式,但是他们并不用引号环绕他们的字符串。然而,这不是有效的JSON;请查看JSON验证章节获得更多信息。
对象
对象是无序键/值对的集合。下面的例子展示了一个地址对象:
{ "address" : { "line1" : "555 Main Street", "city" : "Denver", "stateOrProvince" : "CO", "zipOrPostalCode" : "80202", "country" : "USA" } }
对象(这里是指地址)被环绕在大括号里,由一对对被逗号分割的键/值对组成。
数组
数组是有序值的集合,数组看起来像这样:
{ "people" : [ { "firstName": "John", "lastName": "Smith", "age": 35 }, { "firstName": "Jane", "lastName": "Smith", "age": 32 } ] }
值类型
值(即键/值对右手边的)可以是下列任一类型:
对象
数组
字符串
数字
布尔值
null
数字 数字可以是整数或者双精度浮点型。这里有一些例子: “age”: 29
"cost": 299.99 "temperature": -10.5 "speed_of_light": 1.23e11 "speed_of_light": 1.23e+11 "speed_of_light": 1.23E11 "speed_of_light": 1.23E+11
属性名(如age等)是被双引号环绕的字符串,但是值没有引号。数字可以有负号。紧跟在数值后面的指数部分(记作e或E),可以选择正负号。将0,八进制放在数值前是不被允许的,十六进制同样不被允许 。
布尔值
在JSON里,布尔值要么是真,要么是假,如下:
{ "emailValidated" : true }
属性名(emailVaild)是被双引号环绕的字符串,但是值(true)没有引号。
null
虽然从技术层面上说null不是一个数据类型,它是一个特殊的值,可以用来表示数据元素没有值。在下面的例子里, 年龄的作用域没有值(也许是因为用户选择不填写这个信息):
{ "age" : null }
注释
JSON不允许有注释。注释原本是JSON的一部分,但是开发者将解析指令放入注释中,这极大地滥用了它们。当道格拉斯.克罗克福德看见开发者如此实践时,他从JSON里移除了注释,以此保持计算机平台的互操作性。
样式
也许你已经注意到属性名(及冒号的左边)使用了驼峰命名法。这不是一个准则或者标准,但是一个约定俗称的规定,这个规定被写在在谷歌的JSON样式指南里: http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml.
官方语法
道格拉斯.克罗克福德的JSON网站(http://www.json.org)提供了JSON语法的完整描述。
此外,JSON Pro Quick Guide (在iphone苹果商店里可免费获取)提供了样例和JSON语法的概述。
下一篇: Core Json–JSON模型