当前位置: 代码迷 >> 综合 >> 序列化对象(javaScript Object Notation)
  详细解决方案

序列化对象(javaScript Object Notation)

热度:9   发布时间:2023-12-14 17:15:48.0

对象序列化(serialization): 将对象的状态转化为字符串. 也可以将字符串还原为对象.
es5 , 提供了内置函数JSON.stringify() , 和JSON.parse() ,用来序列化和还原JavaScript对象.
JSON的全称是"JavaScript Object Notation" —JavaScript对象表示法.

var user = {name:"博主" , pwd:"123456"};
var s= JSON.stringify(user);
p = JSON.parse(s) ;  //p是s的深度clone

JSON 的语法是javaScript的子集, 不能表示JavaScript里的所有值.
支持对象,数组,字符串,无穷大数字,true,false和null , 并且它们可以序列化和还原.
NaN , Infinity, -Infinity序列化的结果是null,
日期对象序列化的结果是ISO格式的日期字符串, JSON.parse(Date对象) 为字符串;
函数 , RegExp , Error对象和undefined值不能序列化 ,在序列化的输出字符串会将这个属性省略掉.
JSON.stringify()和JSON.parse() 都可以接受第二个可选参数,通过传入需要序列化或还原的属性列表来定制
自定义的序列化或还原操作.
一个栗子:

  var  person ={name:"黄科坚" , sex:"男" , love: function(){alert("love编程")},  date: new Date(),undefined:undefined ,              };var s =JSON.stringify(person); //将对象序列化
console.log(typeof s)  //'string'var decodeperson=JSON.parse(s); //将JSON 还原成对象console.log(decodeperson.love) //undefined;console.log(typeof decodeperson.date); //'string';console.log(decodeperson.hasOwnProperty("undefined")); //false
  相关解决方案