您的位置:首页 > Web前端 > JavaScript

轻量级数据格式——JSON

2016-12-04 19:44 176 查看
在很久很久以前,XML是互联网上传输数据的标准 ,但是大家普遍反映XML太繁琐
,再后来,随着Web的发展 ,人们发现JSON作为JavaScript语法的子集使用更方便
.于是JSON就成为了标准 ,现在大家都把JSON作为通信的数据格式



更多资料请访问:http://blog.csdn.net/q1056843325/article/details/53427123

JSON语法大体分为三种类型值
简单类型值:可表示字符串、数字、布尔值和null
对象:复杂数据类型,表示无序键值对
数组:复杂数据类型,表示有序值列表


简单类型值

单独的基本类型值也可以看做JSON 

语法与JavaScript相同 

只有一点要注意 

在我们JavaScript中字符串可以用双引号表示,也可以用单引号表示 

但是JSON中的字符串格式必须使用双引号


对象

由于JSON是JavaScript语法的子集 

所以我主要说一下不太一样的地方 

先看一下我们常用的对象字面量声明格式
var man = {
name: 'payen',
sex: 'male',
age: 19
};
1
2
3
4
5
1
2
3
4
5

我们JavaScript中对象可以给属性加引号也可以不加 

(为了区分普通对象与JSON对象,通常不加引号) 

但在JSON中对象要求给属性加(双)引号 

我们上面的对象在JavaScript中也可以这么写,完全等价
var man = {
"name": "payen",
"sex": "male",
"age": 19
};
1
2
3
4
5
1
2
3
4
5

而用JSON表示上面的对象就是
{
"name": "payen",
"sex": "male",
"age": 19
}
1
2
3
4
5
1
2
3
4
5

(JSON中没有变量的概念,没有分号) 

当然JSON中对象的值也可以是对象 

不管多么复杂的JSON,对象的键(属性)都要加(双)引号


数组

虽然在我们JavaScript中,数组严格来说属于对象 

但我们通常都把它们区别对待 

我们通用的声明数组字面量的方法
var value = [123, 'abc', true];
1
1

JSON也是相同的语法
[123, "abc", true]
1
1

再次强调,JSON没有变量和分号

通常来说,数组和对象是JSON的最外层形式 

通过数组、对象以及简单类型值能够构造各式各样的JSON数据格式


JSON对象

ES5规范了解析JSON的行为 

定义了全局对象JSON 

它有两个方法
stringify() 

JavaScript对象 –> JSON字符串
parse() 

JSON字符串 –> JavaScript对象

最基本的用法当然就是 

我们把要转换的变量作为参数穿进去 

举个例子(这个例子会一直用)
var man = {
'name': "payen", <--
sex: "male", <--
"age": 19,
"school": {
"name": 'HUST',
"sex": undefined, <--
"location": function(){} <--
}
}
var str = JSON.stringify(man);
console.log(str);
console.log(typeof str);
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13

下面我们看看控制台打印 



可以看到JSON.stringify真的返回了JSON字符串 

我们无引号还有单引号的属性在JSON字符串中都变成了双引号 

并且属性值为undefined或者函数的属性被自动忽略了 

(原型成员更是被忽略掉)

但是数组不一样 

数组没有对象绝情把它们一脚踢开,而是返回null
console.log(JSON.stringify([123, undefined, null, function(){}]));
1
1



我们可以用JSON.parse还原为JavaScript对象
console.log(JSON.parse(str));
1
1

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: