1>内容:
JSON 是一种数据格式,是js的一个严格子集,利用js中的一些模式来表示结构化数据,但并不从属与js,它并不是只有js才能使用。很多编程语言都有针对JSON的解析器和序列化器。
2>Json可以表示的三种类型值:
1.简单值:数值,字符串,布尔值,null(不支持undefined)
例如:
5:就是简单值
“hello”:js字符串与json字符串最大的区别就是json字符串必须是双引号(单引号语法错误)
2.对象:复杂数据,表示一组无序的键值对,每个键值对的值可以是简单是也可以是复杂值
例如:
Js对象标准表示法:
var object={
name:"shisha",
age:"age"
};
Js对象也可以表示为:
var object={
"name":"shisha"
,"age":"22"
};
Json对象表示为:
{"name":"shisha","age":"22"}
Json对象与js对象有两个不同的地方:json对象没有声明变量,其次没有末尾分号
3.数组:复杂数据,一组有序值的列表
Json不支持变量,函数或对象实例
3>序列化与反序列化
序列化:将Json对象解析为有用的js对象
4>json方法:
1》eval():将json字符串反序列化为js对象,可能会执行一些恶意代码
2》parse():将json字符串反序列化为js对象
接受第二个参数(一个函数,接受两个参数一个键和一个值)
3》Json解析器(官方网址)
4》stringify():将js对象序列化为json字符串(最终结果都是有效json数据类型)
var object={
"name":"shisha",
"age":"22"
}
var jsontext=JSON.stringify(object)
console.log(jsontext);//{"name":"shisha","age":"22"}
stringify除了要序列化的js对象外,还可以接受两个参数:
第一个参数是过滤器(可以是一个数组也可以是一个函数)
数组时最终结果就只包含数组中列出的属性
函数时传入两个参数属性名和属性值
第二个参数是一个选项,表示是否在JSON字符串中保留缩进
数值表示每个级别的缩进的空格数(最大为10,大于10自动转换成10)
字符串表示前面的空格变成这个字符串(同上最大为10)
var object={
"name":"shisha",
"age":"22",
"book":"hhhh",
"title":"123"
}
var jsontext=JSON.stringify(object,["title"]);
console.log(jsontext);//{"title":"123"}
var jsontext=JSON.stringify(object,function(key,value){
switch(key){
case "name":
return value.split(",");
default:
return value;
}
});
console.log(jsontext);//{"name":["shisha"],"age":"22","book":"hhhh","title":"123"}