Core Json–JSON概述

Posted by 撒得一地 on 2016年4月20日 in 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语法的概述。

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.