轻量级数据格式——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语法的子集
所以我主要说一下不太一样的地方
先看一下我们常用的对象字面量声明格式
2
3
4
5
1
2
3
4
5
我们JavaScript中对象可以给属性加引号也可以不加
(为了区分普通对象与JSON对象,通常不加引号)
但在JSON中对象要求给属性加(双)引号
我们上面的对象在JavaScript中也可以这么写,完全等价
2
3
4
5
1
2
3
4
5
而用JSON表示上面的对象就是
2
3
4
5
1
2
3
4
5
(JSON中没有变量的概念,没有分号)
当然JSON中对象的值也可以是对象
不管多么复杂的JSON,对象的键(属性)都要加(双)引号
虽然在我们JavaScript中,数组严格来说属于对象
但我们通常都把它们区别对待
我们通用的声明数组字面量的方法
1
JSON也是相同的语法
1
再次强调,JSON没有变量和分号
通常来说,数组和对象是JSON的最外层形式
通过数组、对象以及简单类型值能够构造各式各样的JSON数据格式
ES5规范了解析JSON的行为
定义了全局对象JSON
它有两个方法
stringify()
JavaScript对象 –> JSON字符串
parse()
JSON字符串 –> JavaScript对象
最基本的用法当然就是
我们把要转换的变量作为参数穿进去
举个例子(这个例子会一直用)
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
1
我们可以用JSON.parse还原为JavaScript对象
1
,再后来,随着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
相关文章推荐
- JSON数据模式--轻量级的数据交换格式!
- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式 --==- 附上可以编译的程序
- XML的竞争对手---1.5.2: 轻量级的数据交换格式---JSON
- 轻量级数据交换格式 JSON for C++
- JSON(JavaScript Object Notation)-一种轻量级的数据交换格式
- Json 一种轻量级的数据通信格式
- 【原】轻量级的数据交换格式——初识Json(上)
- JSON(一种轻量级的数据交换格式)格式化工具
- JSON - 轻量级的数据交换格式
- [教程]轻量级文本数据交换格式:JSON
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
- 轻量级的数据交换格式——初识Json(上)
- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式 研究 (二)
- JSON:一种轻量级的数据交换格式
- 【原】轻量级的数据交换格式——初识Json(下)
- JSON——轻量级的数据交换格式(理论与 .Net 实践)
- 轻量级数据交换格式 JSON for C++
- 轻量级的数据交换格式——初识Json(上)
- python开发_json_一种轻量级的数据交换格式