介绍
JSON是一个数据格式,简化表示复杂数据结构的工作量,使用js语法的子集表示对象,数组,字符串,数值,布尔值和null
Json语法
可以表示三种类型的值
1 简单值:字符串,数值,布尔值,和null(排除undefined)
比如: 数值:5 字符串:”nice”(必须双引号)
2 对象:表示为有序的键值对
Js字面量
Var obj={
Name="lillian",
Age=19
}
json的表述方式
{
"name"="lillian",
"age"=19
}
json表示的对象可以有重复的变量而js字面量不可以。
{
"name"="lillian",
"age"=19
"School":{
"Name"="university"
}
3 数组:表示为有序的值的列表
js字面量:Var values=[25,”hi”,true]
Json:[25,”hi”,true]
json数组没有变量和引号,把数组和对象结合起来,可以构成更复杂的数据集合。
解析和序列化
Json为什么会流行???
1.和js的语法很类似
2.Json数据结构可以解析为有用的js对象
从xml数据结构解析成dom文档而且从中提取数据极为麻烦
Book[2].title
Document.getElementsByTagName(“book”)[2].getAttribute(“title”);
json可以解析为js对象的便利使他成为Web服务开发的交换数据的标准
**
JSON对象
**
1把js对象序列化成json字符串 用json.stringfy()
2把json字符串解析成原生js值 用json.parse()
json.stringfy()默认输出的是不包含任何空格字符或缩进的字符串,所有函数,原型成员,值为undefined的属性都会被忽略
用法:深克隆
缺点:方法,原型,值为undefined的属性不能复制
var obj1={
name:"lillian",
age:19,`在这里插入代码片`
eat(){
console.log("eating");
},
marrage:null,
boyfriend:undefined
};
var obj2=JSON.parse(JSON.stringify(obj1));
2.js判断空对象
var data={};
var b=JSON。stringify(data)=="{}";