1.JSON是一种数据格式,不是一种编程语言,虽然具有相同的语法形式,但是JSON并不从属于JS。而且并不只有JS才使用JSON,毕竟JSON是一种数据格式。很多编程语言都有针对JSON的解析器和序列化器。
2. JSON的数据形式
*最简单的JSON数据形式就是简单值。注意:JSON字符串必须使用双引号,如果使用单引号会导致语法错误。
//JSON简单值
10
"hello"
true
null
*对象。与JS对象字面量相比,JSON有两点不同之处,1.没有声明变量,JSON中没有变量的概念。2.没有末尾的分号,因为它不是JS语句所以不需要分号。注意:JSON中对象的属性名也要加双引号。
//JS对象字面量表示
var box = {
name : 'Lee',
age : 100
};
alert(box.name);
//JSON对象表示,属性名也要使用双引号
{
"name" : "Lee",
"age" : 100
}
//JSON可以在对象中嵌入对象,该例子中虽然有两个name属性,但是它们分属不同的对象,所以没有问题。但是同一个对象不能有
//重名的属性
{
"name" : "Lee",
"age" : 100
"school":{
"name":"xiwanxiaoxue"
"adds":"zancun"
}
}
*数组
//普通数组
var box = [100, 'Lee', true];
//JSON数组
[100, "Lee", true]
/**
*PS:JSON说白了就是一个字符串,所以任何表示,都应该加上双引号表示字符串
*PS:JSON对象和数组比普通对象和数组,少了分号,少了变量赋值,而且本身应该是字符串表示
*JSON数组也没有变量和分号,把数组和对象结合起来,就可以构成更加复杂的数据结构
*/
//最常用的JSON结构。数组中包含对象,每个对象都有几个属性,属性的值还可以是数组。总之它们结合使用可以创造出各种各样的
数据结构。
[
{
"title" : "a",
"num" : 1
},
{
"title" : "b",
"num" : 1
},
{
"title" : "c",
"num" : 1
}
]
3. 解析与序列化
JSON之所有流行,就是因为它可以把JSON数据结构解析为有用的JS对象。从而可以方便的去获取数据。
1.JSON对象
JSON对象有两个方法:stringify() parse()
这两个方法分别用于将JS对象序列化为JSON字符串和把JSON字符串解析为JS值。
//一个JS对象字面量
var test = {
name :"张三",
age : 19,
adds : "火星"
};
//转换为JSON格式
var jsonText = JSON.stringify(test);
alert(jsonText);//弹出::{"name":"张三","age":19,"adds":"火星"}
//将jsonText转换为对象
var testCopy = JSON.parse(jsonText);
alert(testCopy.name);//弹出:张三
// 注意:虽然testCopy和test有者相同的属性,但是它们是相互独立的,没有任何的关系。