1、json。
定义:json(javascript object notation):js对象表示法。
语法:可以表示三种类型的值。如下。
1、简单值:null 布尔 数值 字符串(无defined)
2、对象:无序键值对。
此外,写法上属性有双引号,没有变量和分号。
js对象表示法:
var book = {
name:"tfs",
age:5
};
jSON表示法:
{
"name":"tfs",
"age":5
}
3、数组:有序键值对。
[
{
"name":"tfs",
"age":5
"sister":[
"name":"tfr",
"age":4
]
}
]
解析:两种。把json解析成js,和把js解析成json。
1、把js解析成json
JSON.stringify(),默认解析完输出的json不带任何换行缩进。
var book = {
balabala
}
var jsonText = JSON.stringify(book);
2、把json解析成js。
两种方法,eval()和JSON.parse()。但eval()可能会执行一些恶意代码,不安全,故一般不用。
var bookCopy = JSON.parse( jsonText );
序列化:两种方法:JSON.stringify()和toJSON()
1、JSON.stringify(book,过滤器,缩进与否)
过滤对象:可以是数组或者函数。
数组:var jsonText = JSON.stringify(book,["name","age"]);则只保留book变量里的两个属性,name 和age
函数:var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case "name":
return value.join(’,“); //将数组连成一个字符串。
case "age":
return undefined; //删除该属性。
default:
return value; //返回book里除了undefined的属性外的其他属性。
}
});
缩进与否:var jsonText = JSON.stringify(book,null,"--");
var jsonText = JSON.stringify(book,null,4);
两种,见上。数值或者字符串。另,只要该参数有效,最后的结果会自动插入换行符。且缩进空格数最大值为10,大于10则会自动转换成10.
2、toJSON()
var book = {
name:"tfs",
age:5
toJSON:function(){ //把toJSON()方法加入js的变量book,实现自定义序列化。若toJSON()和过滤器同时存在,则传入过滤器的值是toJSON()返回的值。
return this.name;
}
};
var jsonText = JSON.stringify(book); //{”name“:"tfs"}
解析选项:
var bookCopy = JSON.parse(jsonText,还原函数);
还原函数 function(key,value){
}
注:这里不得不说一下js对象的知识了。