序列化是指将对象(Object)、数组(Array)等复杂的数据类型转换成字符串的过程,方便在不同平台上的传输和存储。在JavaScript中,序列化的主要应用是在数据传输和存储时,将复杂的数据类型转换为字符串,再通过反序列化,将字符串转回原来的数据类型。
JavaScript中常用的序列化方法有两种:JSON.stringify()和toString()
JSON.stringify(obj, [replacer], [space])方法可以将一个JavaScript对象序列化成JSON字符串,其中,第一个参数是要序列化的对象,第二个参数可选,可以是一个函数,也可以是一个数组,用来过滤要序列化的属性,第三个参数也可选,用来控制JSON字符串的缩进和格式。
let foo = {name:'Jack', age:18, gender:'male'};
let json = JSON.stringify(foo);
console.log(json); // {"name":"Jack","age":18,"gender":"male"}
toString()方法将对象转换为字符串,但它不能实现JSON数据的生成,仅限于将对象转换为字符串。
let foo = {name:'Jack', age:18, gender:'male'};
let str = foo.toString();
console.log(str); // [object Object]
下面是两个序列化的示例:
let movie = {
title: 'The Shawshank Redemption',
actor: {
name: 'Tim Robbins',
age: 62,
gender: 'male'
},
director: {
name: 'Frank Darabont',
age: 60,
gender: 'male'
}
}
let json_movie = JSON.stringify(movie);
console.log(json_movie);
执行结果:
{
"title":"The Shawshank Redemption",
"actor":{
"name":"Tim Robbins",
"age":62,
"gender":"male"
},
"director":{
"name":"Frank Darabont",
"age":60,
"gender":"male"
}
}
let person = {
name:'Tom',
age:28,
gender:'male',
profession:'Engineer',
interests:['reading','music','travel'],
setAddress:function(city, area){
this.address = {
city:city,
area:area
}
}
}
person.setAddress('Shanghai','Pudong');
let json_person = JSON.stringify(person, ['name', 'age', 'interests', 'address']);
console.log(json_person);
执行结果:
{
"name":"Tom",
"age":28,
"interests":["reading","music","travel"],
"address":{
"city":"Shanghai",
"area":"Pudong"
}
}
以上是JS解析与序列化JSON数据(二) - 序列化探讨的完整攻略,其中包含两个示例说明。
本文链接:http://task.lmcjl.com/news/9132.html