JSON和JSON对象
JSON是JavaScript Object Notation的缩写,中文译为JavaScript对象表示法。用来作为数据交换的文本格式,作用类似于XML,而2001年Douglas Crockford提出的目的就是为了取代XML,它不是一种编程语言,仅用来描述数据结构。
1、JSON语法规则
JSON的语法可以表示以下三种类型的值:简单值、JSON对象和数组。
(1)简单值
简单值使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。
"Hello World!" // 字符串
99 // 数值
true // 布尔型
false // 布尔型
null
// 在JSON中不能使用的值
NaN // 数值不能是NaN
Infinity // 数值不能是Infinity
undefined // 在JSON也不可以使用JavaScript中的undefined
'Hello World!' // 字符串必须使用双引号表示,不能使用单引号
0x1 // 数值必须以十进制表示,不能使用十六进制
(2)对象
对象是一组有序的键值对的数据组成的数据类型。键值对中,值可以是简单值,也可以是对象和数组(数组也是用来表示JSON的数据类型,见接下来内容)。一般很多刚入门的同学都在JavaScript中使用JSON所以经常会和JSON对象混淆,要十分注意。
// 对象,对象的属性名必须使用双引号,值要是字符串也必须使用双引号
{
"name": "Andy",
"age": 18,
"isStudent": true,
"isLeader": false,
"mark": null,
"school": {
"name": "BIT",
"region": "Beijing" // 这个地方不能有逗号,因为是对象的最后一个属性成员
} // 这个地方也不可以有逗号,因为也是对象的最后一个属性成员
}
(3)数组
数组是由一组有序的数组组成的列表。在数组中,值可以是简单值,也可以是对象和数组。记住,记住,再记住,在JSON中数组最后一个元素一定不要有逗号。
// 示例一
["Andy", "Ruby", "Danny", "Peter", "Lisa"]
// 示例二
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
// 示例三
[
{"name": "Andy", "age": 18},
{"name": "Ruby", "age": 18},
{"name": "Danny", "age": 20}
]
// 示例四
[
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
]
2、JSON字符串和JSON对象
(1)JSON字符串
JSON字符串与普通的字符串没有任何特殊的地方,但是之所以称为JSON字符串是因为,这个字符串符合我们前面介绍的语法规则。
//JSON字符串
var p ='{"name":"Andy","gender":"男","age":"18"}';
console.log(p); // {"name":"Andy","gender":"男","age":"18"}
alert(typeof(p));// string
(2)JSON对象
JSON对象主要是在JavaScript的说法。在面向对象编程中,类的实例化叫做对象,对象拥有不同的属性,键值对就是对象的属性和值。
// JSON对象
var person={
"name":"Andy",
"gender":"男",
"age":"18"
}
console.log(person.name);// 在控制台输出Andy,可以通过点运算直接访问对象属性
alert(typeof(person));// object