从头说起:
首先的首先,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法
Json语法规则:
{ "firstName":"John" , "lastName":"Doe" }
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }
或者这样:
var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } ];
那什么是对象序列化呢?
专业术语如是解释:
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
通俗讲呢:对象序列化就是指将对象的状态转换为字符串
JSON对象
我们都知道eval()函数可以将Json转换为Javascript对象。Js内建的eavl()函数用Json数据来生成原生的JavaScript对象。
这是早期的Json解析器解析方法,erjson对象有两个方法:stringify()和parse()
这两个方法分别用于将js对象序列化为json字符串和把json字符串解析诶原生的js值
下面来详细说说这两个函数:
Json.stringify()
作用:序列化原始值、对象、数组
语法:JSON.stringify(value [, replacer] [, space])
参数:
value:要转换成JSON字符串的原始值、对象或数组
replacer:可选参数,一个数组或函数
space:可选参数,一个数值或一个字符串
返回:JSON格式的字符串,代表value的值,同时通过了replacer的过滤,以及根据space进行了格式化
1、json数据过滤
a.如果过滤器参数是数组,那么JSON.stringify()结果中将只包含数组中列出的属性。
var myMes = {
"name": "ys",
"age": 12,
"like": "drink",
"nationality": "China"
};
/*实现过滤,只留下name和age*/
var jsonText = JSON.stringify(myMes, ["name", "age"]);
console.log(jsonText); //{"name": "ys", "age": 12}
b.如果第二个参数是函数,传入的函数要接收两个参数,再按照相应的需求做出处理
var myMes= {
"name": "ys",
"age": 12,
"like": "drink",
"nationality": "China"
};
var jsonText = JSON.stringify(myMes, function(key, value){
switch(key){
case "name":
return "名字改变了";
default:
return value;
}
}, 4);
console.log(jsonText);
2.字符串缩进
第三个参数就是用来实现字符串缩进的,数字几就表示缩进几个空格
var myMes= {
"name": "ys",
"age": 12,
"like": "drink",
"nationality": "China"
};
var jsonText = JSON.stringify(myMes, ["name", "age"], 4);
console.log(jsonText);//{"name": "ys", "age": 12}
结果如图:
如果不加第三个参数的话效果:
1.作用
解析JSON格式的字符串
2.语法
JSON.parse(s[, reviver])
3.参数
s,要解析的字符串
reviver,可选参数,用来转换解析值的可选函数
4.返回
一个对象、数组或原始值。该返回值是从s中解析的(还有可能被reviver修改过);
var myMes= {
"name": "ys",
"age": 12
};
console.log(typeof myMes);//Object
//为了模拟json字符串
var jsonText = JSON.stringify(myMes);
console.log(typeof jsonText);//String
var jsonObj = JSON.parse(jsonText);
console.log(typeof jsonObj);//Object