JSON

345 阅读4分钟

一、什么是json

1.1、JSON是一种数据交换模式

数据交换格式是一种在不同平台间传递数据的文本格式。

1.2、JSON独立于编程语言

JSON全称(JavaScript Object Notation)javaScript对象表示法

JSON基于JavaScript对象字面量

1.3 专业术语与概念

JSON:javaScript对象表示法

表示法:一个用于表示诸如数字或单词的字符系统

数据交换格式:用于在不同平台或系统间交换数据的文本格式。

可移植性:以一种对双方系统都兼容的方式在平台间传递信息。

二、JSON语法

2.1 JSON基于JS对象字面量

所谓字面量:是对数据值的具体表示

2.2 名称——值对

名称——值对中的值可以是数字、布尔值、null、数组和对象。

例:"animal":"cat" "animal"就是名称,"cat"就是值。

JSON中使用冒号(:)来分割名称和值。

Json中的名称和值对的名称如果被系统作为对象装入内存·的话,将会成为”属性“。

当你在一个字符串类型的值外面使用下面字符时,实际告诉机器如何读取数据的指令:

{ (左花括号)指:开始读取对象

} (右花括号)指:结束读取对象

[(左方括号)指:开始读取数组

] (右方括号)指:结束读取数组

:(冒号)指:在名称——值对中分割名称和值

,(逗号)指:分割对象中的名称—值对 或者分割数组中的值,也可以认为是”一个新部分的开始“

2.4 语法验证

集成开发环境(IDE)

JSON Formatter&Validator

JSON Editor Online

JSONLint

2.5 JSON文件

2.6 JSON的媒体类型

JSON的MIME类型是:application/json

2.7 专业术语

字面量:指字面的意思与其想要表达的意思是完全一致的值。

变量:通过形如x的标识符来表示的、可以修改的一类值。

最大可移植性(数据交换中)

通过保证数据本身对于平台和系统的兼容性来提供超越数据格式本身的可移植性;

名称-值对:指拥有名称和对应的值的属性和特征(也叫键-值对)

语法验证:关注JSON格式的验证

一致性验证:关注独特数据结构的验证

三、JSON的数据类型

3.1数据类型简介

原始数据类型:数字、字符和字符串、布尔类型

复合数据类型:枚举数据类型、对象数据类型

3.2 JSON中的数据类型

复合数据类型可以被解构为原始数据类型

JSON中的类型:对象、字符串、数字、布尔值、null、数组

3.3 JSON 中的对象数据类型

{

	"person":{

	"name":"liqiang",

	"age":60,

	"head":{

		"hair":{

				"color":"blue",

				"length":"short",

				"style":"A-line"

			},

		"eyes":"green"

		}

 	}

}

3.4 JSON中的字符串类型

除了双引号和反斜线,还需要转义以下字符:

/(正斜线)

\b(退格符)

\f(换页符)

\t(制表符)

\n(换行符)

\r(回车符)

\u 后面跟十六进制字符

3.9 专业术语

JSON中的字符串类型

一个字符串值,如”my string" ,使用双引号包裹。

JSON中的布尔值:true false

JSON的数字类型:一个数字值

JSON中的NULL值,一个表示空值的null值

JSON中的数组类型:数组是值得集合或列表,每个值都可以是字符串、数字、布尔值、对象或数组中的任何一种,数组必须被([])包裹,且值与值之间用逗号隔开。

JSON中的对象类型:对象类型是使用逗号分隔的名称-值对构成的集合,并使用({})包裹。

四、JSON schema :数据交换中一种虚拟的"合同"

JSON schema 主页(json-schema.org)

JSON schema 验证规范(http://json-schema.org/latest/json-schema-validation.html)

五、JSON中的安全问题

跨站请求伪造,即CSRF(cross-site request forgery,读作sea-surf),是一种利用站点对用户浏览器信任而发起攻击的方式。

例:浏览器对于不同域名的站点之间进行资源分享有一定的限制规则。黑客使用 那么银行如何阻止CSRF攻击呢? 将数组存放到对象之中,使其成为非法的Javascript,这样就不会被