JSON是一种轻量级的储存和交换信息的语言。它没有XML那么冗长,而且易于理解。在web开发(如ajax)有种重要的运用。
本文要点:
//1 JSON的语法
//2 JSON的解析和序列化
//2.1 利用eval进行解析
//2.2 利用JSON对象方法进行解析
//2.2.1 JSON.parse()函数详解
//2.2.2 JSON.stringify()函数详解
//2.2.3 toJSON()函数详解
1.JSON的语法
JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
2.JSON的解析和序列化
json的基本数据格式
//1.基本类型
//JSON中的数据类型有number,布尔,字符串和null。与javascript相比,没有undefined
//2.数组类型
//["a","b"]
//3.对象类型
//{"a" : "a1","b" : "b1"}
//与javascript的对象相比,JSON的对象类型键值都需要用引号
//常用的方式是
//[{"a" : "a1","b" : "b1"},{"a" : "a2","b" : "b2"},{"a" : "a3","b" : "b4"}]
使用eval()进行解析
//1.使用eval()函数进行解析,不安全
var jsonStr = '[{"a" : "a1","b" : "b1"},{"a" : "a2","b" : "b2"},{"a" : "a3","b" : "b4"}]';
var box = eval(jsonStr);
console.log(box[0].a); //a1
使用JSON对象方法进行解析
//2.1使用JSON对象进行解析
//低版本的IE没有JSON对象。引入JSON2.JS即可
var box = JSON.parse(jsonStr);
console.log(box[0].a); //a1
使用JSON对象方法进行序列化
//2.2使用JSON对象进行序列化
var javaScrStr = [{a : "a1",b : "b1"},{a : "a2",b : "b2"},{a : "a3",b : "b3"}];
var jsonStr = JSON.stringify(javaScrStr);
console.log(jsonStr); //[{"a":"a1","b":"b1"},{"a":"a2","b":"b2"},{"a":"a3","b":"b3"}]
JSON.parse()方法详解
//parse函数原型是JSON.parse(text, reviver);
//第一个参数代表着接受的字符串。第二个参数代表接受的格式。
var box = JSON.parse(jsonStr,function(key,value){ //需要传递两个参数,分别表示jsonStr的键值对
if(key == "a"){
return "I'm " + value;
}else{
return value;
}
});
console.log(box[0].a); //I'm a1
console.log(box[0].b); //b1
JSON.stringify()方法详解
//stringify()函数的原型是JSON.stringify(value,replacer,space);
//第一个参数代表需要序列化的字符串,第二个参数代表序列化的过滤(可以是一个数组,也可以是一个函数),第三个参数代表缩进值,接受一个number类型
//以数组形式过滤
var jsonStr = JSON.stringify(javaScrStr,["a"]);
console.log(jsonStr); //[{"a":"a1"},{"a":"a2"},{"a":"a3"}]
var jsonStr = JSON.stringify(javaScrStr,function(key,value){
if(key == "a"){
return "I'm " + value;
}else{
return value
}
},4);
console.log(jsonStr); //带有缩进为4的json数据
toJSON详解
//在javascript对象中加入toJSON方法,过滤时先执行toJSON中的方法,再执行replacer中的函数
var javaScrStr = [{a : "a1",b : "b1",toJSON : function(){return this.a;}},{a : "a2",b : "b2"},{a : "a3",b : "b3"}];
var jsonStr = JSON.stringify(javaScrStr,["a"]);
console.log(jsonStr); //["a1",{"a":"a2"},{"a":"a3"}]
//在JAVA开发和安卓开发中,也广泛应用了json这种数据格式。因此,掌握JSON的应用是必须的。