-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJSON
More file actions
70 lines (61 loc) · 2.93 KB
/
JSON
File metadata and controls
70 lines (61 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
理解JSON语法
解析JSON
序列化JSON
JSON语法: 简单值,对象,数组
JSON 对象有两个方法:stringify()和 parse()
普通对象转json对象
var jsonText = JSON.stringify({});
json 对象转javascript
var obj = JSON.parse(jsonText)
序列化选项:
1. 过滤结果
如果过滤器参数是数组,那么 JSON.stringify()的结果中将只包含面的例子。
var book = {
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book, ["title", "edition"]);
JSON.stringify()的第二个参数是一个数组,其中包含两个字符串:"title"和"edition"。这
两个属性与将要序列化的对象中的属性是对应的,因此在返回的结果字符串中,就只会包含这两个属性:
{"title":"Professional JavaScript","edition":3}
如果第二个参数是函数,行为会稍有不同。传入的函数接收两个参数,属性(键)名和属性值。根
据属性(键)名可以知道应该如何处理要序列化的对象中的属性。属性名只能是字符串,而在值并非键
值对儿结构的值时,键名可以是空字符串。
为了改变序列化对象的结果,函数返回的值就是相应键的值。不过要注意,如果函数返回了
undefined,那么相应的属性会被忽略。还是看一个例子吧。
var book = {
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book, function(key, value){
switch(key){
case "authors":
return value.join(",")
case "year":
return 5000;
case "edition":
return undefined;
default:
return value;
}
});
序列化后的 JSON 字符串如下所示:
{"title":"Professional JavaScript","authors":"Nicholas C. Zakas","year":5000}
2. 字符串缩进
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符
3.解析选项
JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对儿上调用。
JSON.parse() 还原函数(reviver)
小结 ECMAScript 5 定义了一个原生的 JSON 对象,可以用来将对象序列化为 JSON 字符串或者将 JSON
数据解析为 JavaScript 对象。JSON.stringify()和 JSON.parse()方法分别用来实现上述两项功能。
这两个方法都有一些选项,通过它们可以改变过滤的方式,或者改变序列化的过程。
原生的 JSON 对象也得到了很多浏览器的支持,比如 IE8+、Firefox 3.5+、Safari 4+、Opera 10.5 和
Chrome。