Json是什么?是一种数据格式。
数据的两个重要方面:一个是传输,一个是存储。
XML也是一种数据格式。今天Json在数据传输上是主流。
Json数据格式涉及到两个方面的问题
一个是将数据格式化 --- 序列化Json
一个是解析数据 --- 解析Json
注意事项:Json中的字符串和JS中的字符串的差别
在JS中字符串既可以采用双引号,也可以采用单引号。
但是,在Json中只能采用双引号。另外,建议在JS中
字符串采用单引号。
使用Json主要用来表示对象和数组这样的复杂数据结构,当然也可以
表示基本数据类型(String, Boolean, Number, Null, Undefine)
Json中的对象和JS中对象字面量之间的区别
在Json中键值对的键必须加双引号,但是在JS中不必。
在Json中键值对之间以,隔开,不可以出现分号。
注意事项:使用JSON传输数据往往出现如下错误;
对象的属性名忘记加双引号
给对象的属性名添加单引号而不是双引号。
Json中没有变量这样的概念
Json中的数组和JS中的数组几乎相同,还是那一点,对象的属性字段必须加上双引号。
例子:
{
"name": "luohao",
"city": ["wuhan", "chongdu", "chongqing", "xian"]
}
序列化:将Js中的对象转化成Json格式,序列化的两个参数:过滤器和选项。
var person = {
username: 'luohao',
password: 123456,
location: 'whu'
}
参数是一个数组,出现在数组中的属性才会序列化,其余属性忽略不计。
var json = JSON.stringify(person, ['username', 'password']);
console.log(json);
{"username":"luohao","password":123456}
var person = {
username: 'luohao',
password: 123456,
location: 'whu',
hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case 'location': return undefined;
case 'hometown': return undefined;
default: return value;
}
});
console.log(json);
{"username":"luohao","password":123456}
JSON.stringify()中的第三个参数表示缩进的空格数,
这样传输的数据可读性比较好。
var person = {
username: 'luohao',
password: 123456,
location: {
province: 'hubei',
city: 'wuhan',
county: 'qichun'
},
hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case 'hometown': return undefined;
default: return value;
}
});
console.log(json);
{"username":"luohao","password":123456,"location":{"province":"hubei","city":"wuhan","county":"qichun"}}
var person = {
username: 'luohao',
password: 123456,
location: {
province: 'hubei',
city: 'wuhan',
county: 'qichun'
},
hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case 'hometown': return undefined;
default: return value;
}
}, 2);
console.log(json);
{
"username": "luohao",
"password": 123456,
"location": {
"province": "hubei",
"city": "wuhan",
"county": "qichun"
}
}
序列化最核心的一点就是序列化的顺序
toJSon() 可以为任何对象添加toJSon()方法
过滤器函数/属性数组
缩进格式
========================================
与序列化相对的就是解析
将JSon还原成JS对象
json.parse();
接受一个参数,这个参数的类型就是函数。同样是传入键值对,
依次对键对应的值进行转换
=============================================
JSON.stringify()用于向后台传输数据时作相应的处理。
JSON.parse()用于接受后台传来的数据时作相应的处理。
=============================================