-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path064JSON
More file actions
134 lines (89 loc) · 3.44 KB
/
064JSON
File metadata and controls
134 lines (89 loc) · 3.44 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
一. 什么是JSON
json是一种数据格式,json语法能表示简单值、数组、对象三种类型的值。
数组和对象通常是json数据结构的最外层形式
1. 简单值
bool、字符串、number、null
其中字符串与js中的字符串中的不同之处:必须用双引号
2.数组
3. 对象
json对象和js中对象的区别:
json对象的属性名必须用双引号
末尾没有分号(不是一个js语句)
二. json序列化
JSON对象的方法
JSON.stringify(js对象):把js对象序列化为json字符串
JSON.parse(json字符串):把json字符串解析为原生的json对象
1. 将对象序列化成json字符串 JSON.stringify()
在序列化js对象时,函数和undefined值都会被跳过。
JSON.stringify()第一个参数为json对象,第二个参数可以为一个数组,或者一个函数(过滤器)
第二个参数为数组时:
var book = {
"title": "javaScript",
edition: 1,
year: 2011
};
var bookStr = JSON.stringify(book,["title","edition"]);
console.log(bookStr); // "{"title":"javaScript","edition":1}"
typeof bookStr; //string
第二个参数为函数时:
//一般的js对象里的key值是可以不加引号的
var book = {
"title": "javaScript",
edition: 1,
year: 2011
};
//注意:过滤器函数一定要设置default的值
var bookStr = JSON.stringify(book,function(key,value){
switch(key) {
case "year":
return 2016;
default:
return value;
}
});
console.log(bookStr); // "{"title":"javaScript","edition":1,"year":2016}"
typeof bookStr; //string
2. 将json字符串解析成对象
JSON.parse()第一个参数是一个json字符串,第二个参数可以是一个函数
var book1 = {
"title": "javaScript",
edition: 1,
year: 2011
};
var bookStr = JSON.stringify(book1);
var book2 = JSON.parse(bookStr,function(key,value){
if(key == "edition") {
return 2;
} else {
return value;
}
});
console.log(book); // Object {title: "javaScript", edition: 2, year: 2016}
三. 除了json以外的数据格式
XML:可扩展通用标记语言
与json相比:
XML文件庞大,格式复杂,传输占带宽;json较轻量级
-----------------------------------------------------------------------------------------
拜读阮一峰博客:2017.11.12
从结构上看,所有的数据(data)最终都可以分解成三种类型:
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。
第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列
表(List),比如"北京,上海"。
第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对
应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。
Json的规格非常简单:
1) 并列的数据之间用逗号(", ")分隔。
2) 映射用冒号(": ")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。
http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html
---------------------------------------------------------------------------------
<?php
$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
{"a":1,"b":2,"c":3,"d":4,"e":5 }
?>
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true);
?>